在模型用户中我有这个字段。
$this->addField('login')->mandatory(true)->caption('Login')->length(10);
但是当我输入超过10个字符的文本时,验证永远不会发生,并且永远不会在字段下方显示红色消息:"文字太长"
如何在敏捷工具包4.2.4中执行此操作?我想念一些基本的东西???
感谢您的建议!!
答案 0 :(得分:2)
如Field类length()方法描述中所述:
This will provide a HTML settings on a field for maximum field size.
The length of a field will not be enforced by this setting.
...
字段 - >长度($ n)本身不进行任何验证。它只是用于表单字段显示的目的,你也可以在你自己的验证类中的某个地方使用这个值:
// In model class file init method
$model->addHook('beforeSave', array($this, 'customValidation'));
// In model class file
function customValidation() {
foreach ($this->getActualFields() as $f) {
$field = $this->getField($f);
if ($field->length && strlen($this[$f]) > $field->length) {
throw $this->exception('Field value to long', 'Exception_ValidityCheck')
->addMoreInfo('field', $f)
->addMoreInfo('value', $this[$f])
->addMoreInfo('limit', $field->length);
}
}
}
上面的代码完全没有经过测试 - 只是为了给你一个想法。您还可以在表单提交挂钩上验证字段值长度,但这不完全正确。更好的是在模型中做到这一点。
另请查看Romans https://github.com/romaninsh/validation制作的验证附加组件。它必须非常强大。