我正在创建一个模块来更改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'];
如何在Drupal的表单数组中可靠地定位和更改['my_text_list_field'],而不管它所包含的数组的结构如何?
drupal_array_nested_key_exists几乎可以做到,但不完全可以,因为这需要我知道我要查找的元素的父元素。
对于您的用例,我建议您尝试创建字段小部件。
教程1a
开发人员的示例模块还包含优秀的代码(带有文档),您可以根据需要进行修改。您必须查看field_example模块。
在许多情况下,您甚至可能希望在字段小部件的同时提供一个显示格式化程序,因此,如果您希望在不知道如何使用以及在哪里使用字段的情况下更改字段的输出,则需要创建一个自定义的字段格式化程序。
教程2a教程2b