-
牧草人
2009-09-02 17:03:44
老葛 怎么改变form 生成的html啊
-
牧草人
2009-09-02 17:04:44
form api 自动会增加很多html代码 我怎么改变这些form api 自动添加的html呢
-
牧草人
2009-09-02 17:05:43
对于form api 的答复:
theme_element函数
Drupal表单自带了很多元素的默认主题函数,这些函数是可以覆写的.另外,可以为表单元素单独的定一个主题函数,负责表单元素的输出.
在覆写原来的默认函数时,你可以直接先把原来的代码复制过来,根据自己的需求做出修改.主要就是label和input的输出.
可以100%的控制表单元素的输出的.
不过通常很少这样用,通常的解决办法是使用CSS控制.
评论
牧草人 后来又问了表单元素输出的问题.
2009-09-03 09:51:01
老师在吗?
2009-09-03 10:11:35
怎么覆写这个函数啊theme_textfield($element)
2009-09-03 10:34:08
老葛 请问 怎么覆写这个函数theme_textfield ($element)
2009-09-03 13:19:22
你看一下开发指南的主题一章
2009-09-03 13:20:06
在当前主题下的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%的控制整个表单元素的输出了.
不知道牧草人后来解决问题没有
2009-09-03 13:38:13
themename_textfield ($element),name指什么呀?
2009-09-03 13:39:18
name是主题名字
2009-09-03 13:40:37
theme_form_element($element, $value)
2009-09-03 13:41:07
好像是这个函数,学习一下什么是主题函数的覆写吧
2009-09-03 13:41:19
在哪儿学?
2009-09-03 13:42:10
Drupal开发指南的第8章