Php 字段长度验证-敏捷工具包

Php 字段长度验证-敏捷工具包,php,atk4,agiletoolkit,Php,Atk4,Agiletoolkit,在模型用户中,我有这个字段 $this->addField('login')->mandatory(true)->caption('Login')->length(10); 但是当我输入的文本长度超过10个字符时,验证就不会发生,也不会在字段下方显示红色消息:“文本太长” 如何在敏捷工具包4.2.4中做到这一点??我错过了一些基本的东西 谢谢你的建议 如Field class length()方法说明中所述: This will provide a HTML set

在模型用户中,我有这个字段

 $this->addField('login')->mandatory(true)->caption('Login')->length(10);
但是当我输入的文本长度超过10个字符时,验证就不会发生,也不会在字段下方显示红色消息:“文本太长”

如何在敏捷工具包4.2.4中做到这一点??我错过了一些基本的东西


谢谢你的建议

如Field class 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);
        }
    }
}
上面的代码完全未经测试-只是为了让您了解一下。您还可以验证表单提交挂钩上的字段值长度,但这并不完全正确。最好是在模型中这样做


还可以查看由罗马人制作的验证插件。它必须非常强大。

插件看起来不错!!还有您的spinnet,框架在某种类型的验证中进行内置可能会很好;)非常感谢,伙计!一开始,我们和Romans一起研究这个验证插件的想法,但插件的最终作者是Romans:)想法是在下一个主要的ATK发行版中在ATK core中实现这个插件,但也许这个插件将被排除在ATK core之外(为了保持它的轻巧性),并作为单独的组件提供,我猜它非常受欢迎,附加组件,几乎与核心组件相同。是的,非常欢迎你。如果你能接受的话,请接受我的回答:)现在最好的解释,当然,伙计!