codaxis/cakephp-multivalidation-behavior

一个允许动态修改验证规则的 CakePHP 行为。

1.0 2014-04-23 22:15 UTC

This package is not auto-updated.

Last update: 2024-09-14 15:11:19 UTC


README

一个允许动态修改验证规则的 CakePHP 行为。

兼容 Cake 2.4.7+

欢迎提交代码/文档贡献或发布问题。

Build Status

如何安装

您只需将行为文件复制到您的 APP/Model/Behavior 文件夹

您也可以像其他插件一样安装此插件

  • 将文件放入 APP/Plugin/MultiValidation
  • 在您的 bootstrap.php 中添加 CakePlugin::load('MultiValidation') 或直接添加 CakePlugin::loadAll()

如何使用

在您的目标模型中启用插件

class User extends AppModel {

    public $actsAs = array(
        'MultiValidation.MultiValidation' => array(
            'types' => array(
                'enforceUsernameAndEmail' => array(
                    'username' => array(
                        'onlyAlpha' => array(
                            'rule' => 'alphaNumeric'
                        ),
                    ),
                    'email' =>
                        'validEmail' => array(
                            'rule' => 'email',
                            'required' => true
                        ),
                    )
                ),
                'enforcePassword' => array(
                    'password' => array(
                        'minCharsAllowed' => array(
                            'rule' => array('minLength', 8)
                        ),
                    ),
                ),
            )
        )
    )

    public $validate = array(
        'username' => array(
            'mustNotBeBlank' => array(
                'rule' => 'notEmpty'
            )
        ),
        'password' => array(
            'minCharsAllowed' => array(
                'rule' => array('minLength', 4)
            )
        ),
    );
}

然后,在您的模型或控制器中,您可以执行以下操作

    // Add new username and email validation:
    $User->addValidation('enforceUsernameAndEmail');
    // $User->loadedValidation() would return array('enforceUsernameAndEmail')

    // Reset to default state:
    $User->resetValidation();
    // $User->loadedValidation() would return array('_default')

    // Load and set only the password validation:
    $User->loadValidation('enforcePassword');
    // $User->loadedValidation() would return array('enforcePassword')

    // Add the other validation type also:
    $User->addValidation('enforceUsernameAndEmail');
    // $User->loadedValidation() would return array('enforcePassword', 'enforceUsernameAndEmail')

    // Reset again to default state:
    $User->resetValidation();
    // $User->loadedValidation() would return array('_default')