Drupal - динамические опции для поля text_list - PullRequest
0 голосов
/ 18 января 2011

У меня есть пользовательский тип узла, для которого я хочу иметь поле, которое использует специальный комбинированный список на основе list_text.Когда выбирается тип list_text, обычно можно ввести статический список выбираемых текстов, однако я хочу, чтобы этот список был динамическим, то есть основанным на результатах db_query.Каков наилучший способ сделать это с помощью Drupal 7?

Простой пример для пояснения: узел этого пользовательского типа X содержит поле, которое указывает на другой узел, поэтому всякий раз, когда создается узел типа X, яхочу комбинированный список, содержащий все остальные узлы.

(Лучшее решение - отображать комбинированный список только при создании узла, а не при редактировании. Но я мог бы также жить с ним, если во время редактирования отображался комбинированный списока также.)

Я пытался настроить options_select, определив свой собственный тип данных и реализовав hook_options_list соответственно.При создании отображался комбинированный список с правильными значениями, однако я не смог его сохранить. Я понятия не имею, что там пошло не так, но при первой отправке он изменится на другую тему, и при повторной попытке я получилВнутренняя ошибка сервера.Я на правильном пути вообще с определением совершенно нового типа данных для поля?там наверняка должно быть проще?

Ответы [ 2 ]

0 голосов
/ 18 января 2011

Учебник, связанный с allegroconmolto , направил меня по правильному пути. Спасибо за это.

Вот простой способ сделать это: учебник

По сути, это, как я предполагал, общая проблема, и, следовательно, ее простое решение уже включено в модуль webform. Он предоставляет hook_webform_select_options_info, который можно использовать для регистрации метода обратного вызова. Затем метод обратного вызова вызывается каждый раз, когда отображается соответствующая опция выбора веб-формы, так что вы можете легко заполнить ее результатами dbquery или чего-либо еще. Работает как шарм и практически не тратит время на реализацию.

0 голосов
/ 18 января 2011

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

...