我有这段代码为 durpal 搜索表单实现 hook_form_alter 并在那里添加了几个新元素。我还在我的 template.php 中为所述表单添加了主题覆盖代码。除此之外,我还在那里传递表单元素。一切正常 - 添加新元素,使用主题;但是,这就是问题所在。当我尝试使用 drupal_render 渲染表单的每个元素时,它不会显示任何内容。我检查了 $form 数组的内容,它包含所有必要的表单数据。这是我的代码的例外 -
我的模块
function mymod_form_alter(&$form, $form_state, $form_id) {
switch ($form_id) {
case 'search_theme_form':
$form['prop_type'] = array(
'#type' => 'select',
'#default_value' => 'Selection A',
'#options' => array("Selection A","Selection B"),
'#attributes' => array('class'=>'Bold'),
);
break;
}
}
模板.php -
function mytheme_theme() {
return array(
'search_theme_form' => array(
'arguments' => array('form' => NULL),
'template' => 'search_myblock_form',
),
);
}
还有一个奇怪的问题,就是devel 的dsm 甚至无法显示$form 里面的内容。我必须先使用 print_r 获取字符串值并将其提供给 dsm 进行显示。值得一提的是,在我的主题模板中,有这个变量($search_form),其中呈现了我的所有表单元素。由于我想以不同的方式对单个元素进行主题化,所以我不能使用它;我喜欢自己渲染单个元素。