【问题标题】:Field Length validation - Agile toolkit字段长度验证 - 敏捷工具包
【发布时间】:2014-01-28 18:06:42
【问题描述】:

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

 $this->addField('login')->mandatory(true)->caption('Login')->length(10);

但是当我输入超过 10 个字符的文本时,验证永远不会发生,并且永远不会在字段下方显示红色消息:“文本太长”

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

谢谢指教!!

【问题讨论】:

    标签: php atk4 agiletoolkit


    【解决方案1】:

    正如字段类长度()方法描述中所说:

     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.
     ...
    

    Field->length($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);
            }
        }
    }
    

    上面的代码完全未经测试 - 只是为了给你一个想法。您还可以在表单提交挂钩上验证字段值长度,但这并不完全正确。最好在 Model 中执行此操作。

    还可以查看 Romans https://github.com/romaninsh/validation 制作的验证插件。它必须非常强大。

    【讨论】:

    • 插件看起来不错!!还有你的纺纱网,框架内置某种像这样的验证可能会很好;)非常感谢伙计!
    • 一开始,我们与 Romans 一起研究了这个验证插件的想法,但插件的最终作者是 Romans :) 想法是在下一个主要 ATK 的 ATK 核心中实现这个插件发布,但也许该附加组件将被排除在 ATK 核心之外(以保持轻量)并作为单独的可用,我想非常受欢迎,附加组件几乎与核心相同。是的,你非常受欢迎。如果您可以接受,请接受我的回答:)
    • 目前最好的解释,当然,伙计!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多