drupal - drupal形式api中的 “#process”回调有什么用?

标签 drupal

在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/

相关文章:

javascript - 仅当选中其他属性时才显示 ubercart 属性

java - 在服务器上安装Solr : Location?

php - Drupal:为我的表单创建一个特殊的模板文件会影响我的 css,它不会加载

android - 如何让 font-size 0 在 Android 中工作?

mysql - SQL 最后插入到 Drupal 中。它真的是线程安全的吗?

mysql - drupal 中超出数据库查询的问题

Drupal 7 密码哈希

drupal - 修改 drupal View 输出以显示类似 facebook 的按钮

php - 使用 CMS 加速网站开发的最佳实践是什么?

javascript - 如何删除 Drupal 7 下拉 HTML 选择列表中的禁用选项