通过在我的模板中使用此功能,我为不同的内容类型创建了不同的节点表单:
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不适用于主题图层。我是否必须制作一个新模块来实现这一目标?
答案 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。
您也可以使用这些模型的预处理器。