2013-07-05 4 views
1

Я создаю модуль для изменения вывода полей текстового списка Drupal 7.Alter Drupal 7 Значения текстового списка, когда вы не знаете позицию текстового списка в массиве форм

Я знаю, что для этого могу использовать hook_form_alter, проблема в том, что текстовое поле выводится в разных формах в разных местах и ​​на разных глубинах в структуре массива.

В одном случае это может быть -

$form['elements']['some_array_key']['fields']['my_text_list_field']; 

В других случаях это может быть -

$form['fields']['some_array_key'][0]['my_text_list_field']; 

Как я могу достоверно определить местонахождение и изменить [ «my_text_list_field»] в виде массива в Drupal , независимо от структуры массива, который содержится внутри?

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

ответ

0

Для вашего случая использования я предлагаю вам создать виджет поля.

Tutorial 1a

также example modules для разработчиков содержит отличный код (с документацией), которые вы можете изменить в соответствии с вашими потребностями. Вам нужно будет рассмотреть модуль field_example.

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

Tutorial 2a Tutorial 2b