You are here

针对表单元素的验证

g089h515r806 的头像
Submitted by g089h515r806 on 星期二, 2009-08-18 16:04

老葛的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()。后者对前者做了简单封装。
 

Drupal版本:

评论

thomasfan 的头像

事实上很多问题都是原作者的原文错误 :)

其实原著还存在著很多很多小细节的错误,只是觉得这些小错误无关紧要,所以就没有在您这提出来了。

thomasfan 的头像

谢谢喔!期望能帶進更多Drupal同好!

让我们大家携手共进吧^.^