欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

drupal 7 drupal7 d7 drupal_get_form('my_form')传递参数 AG chatgpt 有大用 有大大用

在 Drupal 7 中向 drupal_get_form('my_form') 传递参数的方法

在 Drupal 7 中,您可以通过几种方式向表单函数传递额外参数。以下是详细说明:

方法一:作为额外参数传递

php
$param1 = '值1'; $param2 = ['foo' => 'bar']; $form = drupal_get_form('my_form', $param1, $param2);

表单函数需要这样接收参数:

php
function my_form($form, &$form_state, $param1, $param2) {  // 在这里构建表单 }

方法二:通过 $form_state 传递

也可以先将参数放入 $form_state 中:

php
$form_state = array(  'build_info' => array(    'args' => array('值1', array('foo' => 'bar')),  ), ); $form = drupal_get_form('my_form', $form_state);

重要注意事项:

  1. 表单函数必须在 $form 和 $form_state 之后声明额外的参数

  2. $form_state 前面必须加 & 表示引用传递

  3. 传递的参数数量必须与表单函数期望的参数一致

完整示例:

php
// 调用表单时传递参数 $user_id = 42; $options = ['显示邮箱' => TRUE]; $form = drupal_get_form('user_profile_form', $user_id, $options); // 表单实现 function user_profile_form($form, &$form_state, $user_id, $options) {  $form['name'] = array(    '#type' => 'textfield',    '#title' => t('用户名'),    '#default_value' => user_load($user_id)->name,  );    if ($options['显示邮箱']) {    $form['email'] = array(      '#type' => 'textfield',      '#title' => t('邮箱'),      '#default_value' => user_load($user_id)->mail,    );  }    return $form; }

在 Drupal 7 中,表单主要是通过函数定义的(不像 Drupal 8+ 使用类)。确保使用的参数数量和类型正确是关键。


普通分类: