【问题标题】:Where is CakePHP client side form validation?CakePHP 客户端表单验证在哪里?
【发布时间】:2016-09-19 17:45:56
【问题描述】:

CakePHP 自动为我做一些客户端表单验证 - 检查字段是否为空或电子邮件字段是否实际上是电子邮件地址。不正确的字段会得到一个带有错误消息的漂亮小下拉列表。

这是在哪里管理的?我想将这种验证添加到我的 confirm_email 字段中。

【问题讨论】:

  • 其实就是 Cake 和你的浏览器的混合体,如果添加了各种标签,浏览器会触发 HTML5 验证 (the-art-of-web.com/html/html5-form-validation) CakePHP 的表单助手只是方便根据你的数据库添加这些标签
  • 在每个 Table.php 上设置验证规则

标签: php forms validation cakephp-3.0


【解决方案1】:

$this->Form->input('textfield',array('required'=>true));

会做一些HTML必填字段

【讨论】:

    【解决方案2】:

    我怀疑你说的是HTML5 Form Validation

    在这种情况下,由于输入中的 required="required"type="email" 等属性,您可能会看到此类下拉列表。

    验证可以在src/Model/Table/SomeTable.php 文件中进行管理。请参阅下面的 UsersTable.php 示例。

    class UsersTable extends Table {
    
    public function validationDefault(\Cake\Validation\Validator $validator) {
        $validator->add('email', [
            'email' => [
                'rule' => array('email', true),
                'message' => __('Please, set valid email address')
            ]
        ])
        ->add('password', [
            'length' => [
                'rule' => ['minLength', '8'],
                'message' => __('Password must have at least 8 characters'),
            ]
        ])
        ->add('password_confirmation', [
            'length' => [
                'rule' => ['minLength', '8'],
                'message' => __('Password must have at least 8 characters')
            ],
            'compare' => [
                'rule' => ['compareWith', 'password'],
                'message' => __('Passwords should be the same'),
            ]
        ])
        return $validator;
    }
    
    }
    

    请关注passwordpassword_confirmation。您可以使用规则 compareWith 类似地解决您的问题。

    另请参阅有关 validations 的官方文档。

    【讨论】:

    • 你是对的。我指的是 HTML5 表单验证。我能够使用以下 Javascript 添加电子邮件验证器。 var email = document.getElementById("email"); var confirm_email = document.getElementById("confirm-email"); function validateEmail(){ if(email.value != confirm_email.value) { confirm_email.setCustomValidity("Emails Don't Match"); } else { confirm_email.setCustomValidity(''); } } confirm_email.onchange = validateEmail;
    • 哦,我明白了。对于前端验证,我建议使用validate.js 之类的东西。有一个名为equality 的验证器可用于验证一个输入值是否等于另一个。这是example 的工作原理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    • 1970-01-01
    • 2013-02-10
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多