validation - CakePHP - 使用相同规则验证多个字段

标签 validation cakephp

假设我有十几个单选按钮字段,我想根据两个通用规则对其进行验证。

   'valid'=> array(
        'rule' => array('inList', array('yes','no')),
        'message' => 'Illegal Choice Detected'

   ),
   'required'=> array(
       'rule' => array('notEmpty'),
       'message' => 'Field is required.'
   ),

如何在不必将每个验证规则分配给每个字段的情况下执行此操作?

[编辑]

对于那些像我自己有时喜欢用勺子喂食的人,这是我根据 Burzum 的回答做的!

   public function beforeValidate($options = []) {
        $fields = ['field_1','field_2','field_3','etc'];
        foreach ($fields as $field) {            
            $this->validate[$field]['required'] = array(
                    'rule' => array('notEmpty'),
                    'message' => 'Field is required.'
            );
            $this->validate[$field]['legal'] = array(
                    'rule' => array('inList', array('yes', 'no')),
                    'message' => 'An illegal choice has been detected, please contact the website administrator.'
            );
        }
        return true;
    }

最佳答案

将它们添加到 beforeValidate() 的 foreach 循环中

public function beforeValidate($options = []) {
    $fields = ['field1', '...'];
    foreach ($fields as $field) {
        // Add your rule(s) here to the field
        $this->validate[$field]['myRule'] = ['...'];
    }
    return true;
}

关于validation - CakePHP - 使用相同规则验证多个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22688995/

相关文章:

php - 无法使用 save() 在 CakePHP 中更新(但创建新的)对象

cakephp - 用户 session 和在同一台计算机上运行的两个 CakePHP 应用程序

php - 如何使用php将base64字符串转换为二进制数组

php - 内部联接在 cakephp 中不起作用

PHP:无法加载动态库 intl.so (OSX)

matlab - 我无法理解如何使用多类 SVM 进行 k 折交叉验证测试

validation - 表单中两个日期之间的 Symfony 验证/比较

javascript - 在输入字段中只允许一个点

laravel 和请求验证

C:检查一个数组只包含 0-7 范围内的数字