Ограничьте параметры при создании контента в соответствии с выбранным значением


У меня есть три типа контента, Events, Disciplines и Championships. Event имеет ссылку на сущность s на Disciplines и Championships и Championship имеет ссылку на сущность Disciplines.

 ----- 1..n    1..n ------------
|Event|------------|Championship|
 -----              ------------
   |0..n               |0..n
   |                   |
   |                   |
   |1..n               |
 ---------- 1          |
|Discipline|-----------/
 ----------

Когда пользователи создают новые Event узлы, они сначала выбирают, какие Disciplines задействованы, из списка флажков, а затем аналогичным образом задействованы Championship(ы).

На данный момент отображаются все Championships узлы, позволяющие пользователям потенциально выбирать Championships для Disciplines, которые не являются частью Event.

Можно ли использовать модуль условных полей для создания зависимости для отображения только Championships, где поле дисциплины Championship соответствует Discipline(ам), выбранному при срабатывании зависимости?

Как можно было бы заполнить "Набор значений" в модуле "Условные поля"?

Например, при создании Event1 я выбираю DisciplineA и DisciplineB. Список Championships должен содержать только те, которые имеют DisciplineA или DisciplineB ассоциации и не содержат никаких Championships которые не имеют правильных ассоциаций

Если бы event.дисциплины были списком выбранных дисциплин, я бы хотел что-то в этом роде (с динамическими аспектами условных полей)

SELECT championships c WHERE c.discipline IN (event.disciplines)

Редактировать

Зависимые поля, похоже, делают то, что мне бы хотелось, но версии D7 нет...

Редактировать 2

Немного изменил структуру.

Я полагаю, что Discipline не нужно было быть сущность сама по себе и создали вместо этого дисциплину словаря таксономии с терминами для каждой дисциплины. Event и Championship теперь имеют ссылки на один и тот же термин field_discipline.

С помощью модуля Опция ограничения поля ссылки ссылка на сущность Championship в Event имеет выбранную опцию "Ограничить параметры этого поля в соответствии с соответствующими значениями полей", а соответствующее поле discipline (field_discipline).

При создании Event список Championships пуст, но когда я выбираю Discipline(s) ожидаемые Championships не появляются.

No options are available for the current form values. Try selecting different values for the following fields: discipline.

Редактировать 3...

Firebug предположил, что ajax на самом деле срабатывал не для флажка/переключателя, а для меню выбора. Применен этот патч , и раздел теперь обновляется, но по-прежнему не находит никаких значений. Есть соответствующие узлы Championship, которые нужно найти.

Редактировать 4!

В узлах Championship не были выбраны таксономии дисциплин...

Author: Pedro del Sol, 2013-07-10

2 answers

Я разобрался с этим (в конце концов...)

Вместо того, чтобы использовать Discipline в качестве типа контента (поскольку на самом деле он сохранял только имя) Я создал словарь таксономии под названием Дисциплина и добавил все соответствующие названия дисциплин в качестве терминов.

Удалены ссылки на сущности Discipline в Event и Championship. Добавлена ссылка на термин (field_discipline) в Event и та же ссылка на термин Championship.

Используя модуль ограничения ссылочных параметров (и исправление; см. Вопрос) в ссылка на сущность в Event к Championship добавила "Ограничить параметры этого поля в соответствии с соответствующими значениями полей" и выбрала соответствующее поле field_discipline.

Итак, теперь при создании узла события пользователю предоставляется список флажков для выбора задействованных дисциплин, и когда каждая выбрана, соответствующие чемпионаты добавляются в список доступных чемпионатов.

 1
Author: Pedro del Sol, 2013-07-11 10:35:47

Другой способ, который я нашел для этого, использует ссылки на сущности, ограничение параметров ссылок и модули представлений.

  -----               ----
 |Event|-------------|Race|
  -----  1..*    1..* ----
   *|                  |*
    |                  |
  1 |                  |
 --------- 1           |
|Organiser|------------/
 ---------

Event состоит из Races Organiser может организовать Event(ы) и/или Races в соответствии с событием двух логических полей? а Раса? в типе контента Organiser.

При создании, например, узла Event мы хотим, чтобы только возможные варианты были теми Organiser узлами с событием? поле имеет значение "истина".

Предполагая, что типы контента уже определены, с Event имея ссылку на сущность Orgainser, сначала создайте новое представление...

В этом случае я назвал представление "Организаторы мероприятий - Параметры ограничения" и установил для него значение показывать содержимое типа Organiser. Снимите флажок Создать страницу, затем нажмите Продолжить и редактировать.

В пустом главном представлении нажмите +Добавить и выберите "Ссылка на сущность".

Добавить событие поля? в ПОЛЯ

В настройках формата выберите событие? поле.

В КРИТЕРИИ ФИЛЬТРАЦИИ добавить событие? и установите Оператор в is one of и выберите true из параметров .

Затем отредактируйте поле Ссылки на сущность в типе контента Event, который ссылается на тип Organiser.

Выбор сущности в режиме выберите "Представления: Фильтр по представлению ссылки на сущность", затем выберите вновь созданное представление.

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

Надеюсь, это кому-то поможет, я довольно долго ломал голову над этим...

 0
Author: Pedro del Sol, 2013-08-16 12:45:25