1.有没有办法在客户端进行form_set_error,所以如果javascript中有错误验证它会设置错误并且不允许用户处理其他步骤? js可以被禁用,所以我要格外小心......
哪里有一个像drupal.t这样的drupal javascript函数引用的完整列表?
如何更改表单集错误的错误消息(默认错误如{fieldname ... field is}}?
我该如何处理显示在字段下方/上方/内联的错误?
答案 0 :(得分:1)
JavaScript in Drupal,涵盖Drupal JavaScript API,AHAH表单以及您要查找的内容。 Quick start Guide非常好。
至于验证,你是对的,可以关闭Javascript。 JavaScript验证主要是为了可用性而完成的,因为用户不必等待POST表单以便接收错误消息。在提交表单之前,JavaScript会让他实时知道,例如,他的密码太弱或电子邮件无效。
然而,JavaScript验证不利于安全性。这就是您需要进行服务器端验证的地方。 form_set_error将负责服务器端验证。
因此,如果您的表单如下:
function form_foo($form_state) {
$form['foo'] = array(
'#type' => 'textfield',
'#title' => t('bar'),
'#default_value' => $object['foo'],
'#size' => 60,
'#maxlength' => 64,
'#description' => t('baz'),
);
return $form;
}
服务器端验证如下所示:
function form_foo_validate($form, &$form_state) {
if (empty($form_state['values']['foo'])) {
form_set_error('foo', t('Foo cannot be empty.'));
}
}
如果表单中的bar文本字段确实为空,当用户提交表单栏时会突出显示,'Foo不能为空'会出现错误信息,并且不会调用表单_submit hook。
对于JavaScript功能,Overview of Drupal JavaScript API文档包含您需要的大部分信息。