欢迎各位兄弟 发布技术文章
这里的技术是共享的
在 Drupal 7 中,您可以通过几种方式向表单函数传递额外参数。以下是详细说明:
php$param1 = '值1'; $param2 = ['foo' => 'bar']; $form = drupal_get_form('my_form', $param1, $param2);
表单函数需要这样接收参数:
phpfunction my_form($form, &$form_state, $param1, $param2) { // 在这里构建表单 }
也可以先将参数放入 $form_state 中:
php$form_state = array( 'build_info' => array( 'args' => array('值1', array('foo' => 'bar')), ), ); $form = drupal_get_form('my_form', $form_state);
表单函数必须在 $form
和 $form_state
之后声明额外的参数
$form_state
前面必须加 &
表示引用传递
传递的参数数量必须与表单函数期望的参数一致
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+ 使用类)。确保使用的参数数量和类型正确是关键。