老葛的Drupal'培训班 Think in Drupal
一般情况下,一个表单使用一个验证函数。但是也可以为单个表单元素设置一个验证函数,这和整个表单的验证函数一样。为了实现这一点,我们需要将元素的属性#element_validate设置为一个数组,其中包含了验证函数的名字。表单数据结构中该元素分支的一份完整拷贝,将被作为验证函数的第一个参数。下面是一个专门用来说明这一点的示例,在这里我们强制用户在一个文本字段中只能输入香料(spicy)和糖果(sweet):
// Store the allowed choices in the form definition.
$allowed_flavors = array(t('spicy'), t('sweet'));
$form['flavor'] = array(
'#type' => 'textfield',
'#title' => 'flavor',
'#allowed_flavors' => $allowed_flavors,
'#element_validate' => array('formexample_flavor_validate')
);
那么你表单元素的验证函数应该如下所示:
function formexample_flavor_validate($element, $form_state) {
if (!in_array($form_state['values']['flavor'], $element['#allowed_flavors'])) {
form_error($element, t('You must enter spicy or sweet.'));
}
}
在调用完所有表单元素的验证函数以后,仍需调用表单验证函数。
提示 在你的表单元素未通过验证,你希望为它显示一条错误消息时,如果你知道表单元素的名字,那么使用form_set_error(),如果你拥有表单元素本身,那么使用form_error()。后者对前者做了简单封装。
评论
勘误
function formexample_flavor_validate($element, &$form_state)
ref :http://api.drupal.org/api/function/_form_validate/6
正确,还是少了一个引用传递符号&,这个应该是原作者的事,^
正确,还是少了一个引用传递符号&,这个应该是原作者的事,^_^我在推卸责任了,3ks
事实上是原作者的原著问题
事实上很多问题都是原作者的原文错误 :)
其实原著还存在著很多很多小细节的错误,只是觉得这些小错误无关紧要,所以就没有在您这提出来了。
没事,提出来后,读者可能就不再迷惑了,因为有可能一个错误让
没事,提出来后,读者可能就不再迷惑了,因为有可能一个错误让他们费半天的力气,如果在下面标明了错误,效果会更好.
thomasfan,你出书了?恭喜阿
thomasfan,你出书了?恭喜阿
谢谢喔!呵呵
谢谢喔!期望能帶進更多Drupal同好!
让我们大家携手共进吧^.^