在drupal fapi中有一个属性“#process”。它的作用是什么?为什么密码字段将其用于字段复制而不是在主题化时添加它?
我想将其用于使用hook_elements定义新的字段类型。
编辑:
这是我的hook_elements:
function test_elemets() {
return array(
'test_field' => array(
'#input' => TRUE,
'#process' => array('test_field_process'),
)
);
}
并处理回调:
function test_field_process($element, $edit, &$form_state, $complete_form) {
$element = array();
return $element;
}
正如您在流程函数中看到的那样,我使用$ element = array()来查看会发生什么。
最佳答案
阅读the Forms API documentation on the '#process' form element property。
它是一个回调函数数组,每个回调函数都会通过传递给它的元素定义数组来调用。然后,回调函数可以作用于元素定义数组,以将其转换为其他(通常更复杂)的定义,例如在附加相等性检查JavaScript文件时将密码字段复制,或将一个组合的“ radio ”定义转换为相应数量的特定单个“ radio ”定义,等等。
如果您想提供一个复杂的表单元素(例如,多个“标准”元素的组合,或者一个自动添加标准JavaScript帮助器的元素),则将需要使用它,但仍保留Forms API的简单声明性方法。 (看马,只有一个'#type' = 'myCrazyFormElement'
数组,可以“自动”扩展为更复杂的方式;)
根据用例,可以通过主题层进行此操作,但是每次需要时,都需要更多代码。
关于drupal - drupal形式api中的 “#process”回调有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3928013/