Alter Drupal 7 Значения текстового списка, когда вы не знаете положение текстового списка в массиве форм

Я создаю модуль для изменения вывода полей текстового списка 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 почти делает это, но не совсем, так как требует, чтобы я знал родителей элемента, который ищу.

1 ответ

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

Урок 1a

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

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

Учебник 2а Учебник 2б

Другие вопросы по тегам