Рейтинг:1

Создать несколько полей из одного поля массива

флаг ro

У меня есть представление Drupal, основанное на одной сущности, извлеченной из другой базы данных (это сущность CiviCRM, загруженная в Drupal с помощью Объект CiviCRM друпал модуль).

Одним из полей, которые я использую, является поле массива (скажем, оно называется поле массива), который выводит массив вроде пункт1, пункт2, пункт3 (элементы являются строками) для каждого экземпляра объекта. Количество элементов (то есть длина массива поле массива) ограничено определенным числом для каждого экземпляра объекта.

Теперь я хочу, чтобы каждый из них предметs доступен как отдельное поле в Drupal View. Имя поля должно быть пункт1 и т. д. и значение поля должно быть 1 если пункт1 существует в этом поле массивамассив , и 0 если пункт1 там не существует.

Как мне этого добиться? Я думал о нескольких решениях:

  1. каким-то образом включить функцию внутри Drupal Views, которая «взорвет» мое поле массива на несколько других полей. Я знаю, что функциональность есть, потому что прямо сейчас я могу фильтровать поле массива для конкретных значений с помощью обычного фильтра Drupal Views, т. е. Drupal Views выполняет поиск по поле массива множество. Я просто не могу получить доступ к этой функции для своей цели.
  2. с использованием Представления PHP -- Я читал, что его нельзя использовать из соображений безопасности: https://ohthehugemanatee.org/blog/2013/12/26/44497-people-are-wrong-how-to-never-use-views-php/ а также производительность: https://www.drupal.org/project/views_php
  3. Создание собственного небольшого модуля Drupal для разделения поле массива. Проблема в том, что создается новая таблица с разделенными значениями. Но мне нужно иметь доступ к этим значениям в представлении Drupal на основе существующей сущности. То есть я не могу работать со случайными таблицами, потому что они не будут доступны в моем представлении Drupal. Отношения.
  4. Клонирование существующей сущности (в базе данных CiviCRM), разделение значений поле массива, создав новый атрибут сущности для каждого из этих значений (0 или же 1 снова), создавая связь между исходной сущностью и новой сущностью, делая новую сущность доступной в Drupal через Объект CiviCRM модуль и включение нового объекта в представления Drupal через Отношения. Проблема в том, что мы предпочли бы не слишком сильно изменять исходную базу данных, если это возможно.
  5. К сожалению, похоже, невозможно клонировать и изменить объект только на стороне Drupal, т.к. Объект CiviCRM Модуль не копирует объект в Drupal, а только извлекает информацию из исходной базы данных.

У кого-нибудь есть подсказка? Честно говоря, необходимость разделения массива не кажется мне такой уж сложной, поэтому внутри Drupal Views должно быть более простое решение, чем создание дополнительных сущностей. Это только вопрос отображения, так как никакой дополнительной информации не требуется.

Вариант использования/цель: У меня есть система с одной базой данных Drupal и одной базой данных CiviCRM, которую я хочу дополнить некоторой статистикой. Я создал Drupal View для каждого статистического вопроса, который извлекает информацию из базы данных CiviCRM с помощью Объект CiviCRM Друпал модуль. Но данные (которые представляют собой варианты множественного выбора) поступают в виде массива вариантов. Я не могу правильно подсчитать параметры с представлениями Drupal, если они недоступны как отдельные значения.

Jaypan avatar
флаг de
Скорее всего, для вашей проблемы существует более drupally решение, но вы рассказали нам только технические детали того, как вы пытаетесь достичь какой-то цели, но не объяснили цель. Если вы объясните реальный вариант использования, кто-то может предоставить способ Drupal для его достижения.
флаг lk
Я бы поднял этот вопрос на канале civicrm_entity по адресу https://chat.civicrm.org — там, как правило, тусуются люди, которые наиболее активно работают с этим модулем.
emma avatar
флаг ro
Мой начальник задал вопрос в чате CiviCRM и получил совет изменить способ хранения данных множественного выбора в CiviCRM. Ранее я понял, что способ, которым CiviCRM хранит значения множественного выбора, является странным/нерекомендуемым (см. строки?noredirect=1#comment570065_291361 ). Но изменение базы данных CiviCRM кажется очень сложным решением для разделения поля массива в Drupal Views.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.