Drupal - 为cck表单创建一个验证函数

时间:2010-08-09 04:33:53

标签: php validation drupal forms

通过在我的模板中使用此功能,我为不同的内容类型创建了不同的节点表单:

function mytheme_theme($existing, $type, $theme, $path) {
  return array(
    'type1_form' => array(
        'arguments' => array('form' => NULL),
        'template' => 'type1_form'
    ),
    'type2_form' => array(
        'arguments' => array('form' => NULL),
        'template' => 'type2_form'
    ),
  );
}

现在我想为其中一个表单创建一个验证函数。我尝试在template.php中使用这个函数:

function mytheme_form_alter(&$form, $form_state, $form_id) {
   if($form_id == 'type1_form') {
     $form['#validate'][] = 'my_sample_validate_func';
   }
}

function my_sample_validate_func($form, &$form_state) {
   dsm($form_state);
}

但显然hook_form_alter不适用于主题图层。我是否必须制作一个新模块来实现这一目标?

2 个答案:

答案 0 :(得分:0)

hook_form_alter必须使用modul,而不是template.php文件。对于我的大多数Drupal项目,我最终创建了一个粘贴模块,只是为了保存像form_alter函数这样的东西。

这个Lullabot article显示了如何使用hook_form_alter和主题层更改表单,但在我看来,在单独的模块中更容易实现。

答案 1 :(得分:0)

是的,你可以。但更简单的是创建type1_form.tpl.php,type2_form.tpl.php,通过print_r或devel模块调查$ form。
您也可以使用这些模型的预处理器。