我在尝试更改表单呈现方式时遇到问题。但是,我试图保持它的简单性,因为我发现的教程保留了它 - 但即使我在template.php的hrfrontpage_form_alter函数中的$ form项目具有添加了div包装器 - 它不会渲染它。怎么样?
在我的模块中:
function rsearch_block_info()
{
$blocks['rsearch_form'] = array(
'info' => t('Search Recruiters Front'),
);
return $blocks;
}
function rsearch_block_view($delta = '')
{
$block = array();
switch($delta) {
case 'rsearch_form' :
$block['content'] = drupal_get_form('rsearch_front');
break;
}
return $block;
}
在我的template.php中:
function hrfrontpage_form_alter(&$form, &$form_state, $form_id) {
switch($form_id) {
case 'rsearch_front' :
$form['divstart'] = array(
'#value' => '<div style="background-color:green;">',
'#weight' => -5
);
$form['divend'] = array(
'#value' => '</div>',
'#weight' => 5
);
break;
}
}
答案 0 :(得分:1)
好的,首先你不能在一个表单元素中打开一个div,然后在另一个表单元素中关闭它,因为默认情况下每个表单元素都包含在div中。
您需要做的是使用'#prefix' and '#suffix'
字段元素。
如果您尝试在多个字段周围放置div包装器,则需要将这些字段放在字段集中并使用字段集上的前缀和后缀元素。
简单案例:
$form['my_field'] = array(
'#type' => 'textfield',
'#title' => 'search',
'#prefix' => '<div style="background-color:green;">',
'#suffix' => '</div>',
);
复杂案例:
unset($form['my_element']);
$form['my_wrapper'] = array(
'#type' => 'fieldset',
'#prefix' => '<div style="background-color:green;">',
'#suffix' => '</div>',
);
$form['my_wrapper']['my_field'] = array( //Make sure your fields are children of the wrapper element!
'#type' => 'textfield',
'#title' => 'search',
);
$form['my_wrapper']['my_submit'] = array( //Make sure your fields are children of the wrapper element!
'#type' => 'submit',
'#value' => 'submit',
);
查看表单API:
https://api.drupal.org/api/drupal/developer!topics!forms_api_reference.html/7