Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在CakePHP3中使用validationDefault方法_Php_Validation_Cakephp 3.0 - Fatal编程技术网

如何在CakePHP3中使用validationDefault方法

如何在CakePHP3中使用validationDefault方法,php,validation,cakephp-3.0,Php,Validation,Cakephp 3.0,我正在尝试在我的模型UsersTable中使用validationDefault方法: <?php namespace App\Model\Table; use Cake\ORM\Table; use Cake\Validation\Validator; class UsersTable extends Table { public function initialize(array $config) { $this->addBehavior('Ti

我正在尝试在我的模型UsersTable中使用validationDefault方法:

<?php
namespace App\Model\Table;
use Cake\ORM\Table;
use Cake\Validation\Validator;
class UsersTable extends Table
{

    public function initialize(array $config)
    {
        $this->addBehavior('Timestamp');
        $this->setTable('users');
        $this->setPrimaryKey('id');
    }

    public function validationDefault(Validator $validator)
    {
        $validator->add('login', [
            'length' => [
                'rule' => ['minLength',3],
                'message' => __('Login need to be at least 3 characters long')
            ]
        ]);

        return $validator;
    }
}
注意:如果我直接在控制器中使用validator,则会出现一个错误打印:登录名至少需要3个字符长。但我不希望直接在控制器中使用validator

$validator = new Validator();
        $validator->add('login', [
            'length' => ['rule' => ['minLength', 3],
                'message' => __('Login need to be at least 3 characters long')
            ]
        ]);
        if($validator->errors($this->request->getData())) {
                debug($validator->errors($this->request->getData()));
            }

我向IRC上的通道#cakephp询问这个问题,他们告诉我重新安装cakephp,但使用bake生成模型类

在那之后,一切都很顺利

<?= $this->Form->create('Users', ['url' => ['controller' => 'Users', 'action' => 'add']]); ?>

    <fieldset>
        <legend><?= __('Ajouter un utilisateur') ?></legend>
        <?= $this->Form->control('login') ?>
        <?= $this->Form->control('password') ?>
        <?= $this->Form->control('role', [
            'options' => ['admin' => 'Admin', 'author' => 'Author']
        ]) ?>
    </fieldset>
<?= $this->Form->button(__('Ajouter')); ?>
<?= $this->Form->end() ?>
object(Cake\ORM\Entity) {

    'login' => 'g',
    'password' => '',
    'role' => 'admin',
    '[new]' => true,
    '[accessible]' => [
        '*' => true
    ],
    '[dirty]' => [
        'login' => true,
        'password' => true,
        'role' => true
    ],
    '[original]' => [],
    '[virtual]' => [],
    '[errors]' => [],
    '[invalid]' => [],
    '[repository]' => 'Users'

}
$validator = new Validator();
        $validator->add('login', [
            'length' => ['rule' => ['minLength', 3],
                'message' => __('Login need to be at least 3 characters long')
            ]
        ]);
        if($validator->errors($this->request->getData())) {
                debug($validator->errors($this->request->getData()));
            }