本站本站启用了Drupal缓存,匿名用户只能看到3小时以前的内容.

老葛 怎么改变form 生成的html啊

form api 自动会增加很多html代码 我怎么改变这些form api 自动添加的html呢

对于form api 的答复:
theme_element函数
Drupal表单自带了很多元素的默认主题函数,这些函数是可以覆写的.另外,可以为表单元素单独的定一个主题函数,负责表单元素的输出.
在覆写原来的默认函数时,你可以直接先把原来的代码复制过来,根据自己的需求做出修改.主要就是label和input的输出.
可以100%的控制表单元素的输出的.
不过通常很少这样用,通常的解决办法是使用CSS控制.
评论
牧草人 后来又问了表单元素输出的问题.
老师在吗?
怎么覆写这个函数啊theme_textfield($element)
老葛 请问 怎么覆写这个函数theme_textfield ($element)
你看一下开发指南的主题一章
在当前主题下的template.php文件中,创建一个themename_textfield ($element),就可以实现了
参考答案:
上面是对默认表单元素输出的覆写,对于特定表单元素的覆写,可以指定对应的主题函数,例如:
function rega_theme() {
return array(
'rega_username_element' => array(
'arguments' => array(),
),
);
}
$form['name']['#theme'] ='rega_username_element';
function theme_rega_username_element($element){
$title = $element['#title'];
$size = empty($element['#size']) ? '' : ' size="'. $element['#size'] .'"';
$maxlength = empty($element['#maxlength']) ? '' : ' maxlength="'. $element['#maxlength'] .'"';
$class = array('form-text');
$output = '<p><b>'.filter_xss_admin($title).':<span style="color:#9b2228">*</span></b></p>';
$output .= '<p id="pn">';
$output .= '<input type="text"'. $maxlength .' name="'. $element['#name'] .'" id="uname"'. $size .' value="'. check_plain($element['#value']) .'"'. drupal_attributes($element['#attributes']) .' />';
$output .= '</p>';
return $output;
}
这样就可以100%的定制特定元素的输出了,从而也就可以100%的控制整个表单元素的输出了.
不知道牧草人后来解决问题没有
themename_textfield ($element),name指什么呀?
name是主题名字
theme_form_element($element, $value)
好像是这个函数,学习一下什么是主题函数的覆写吧
在哪儿学?
Drupal开发指南的第8章