Как изменить сообщение об ошибке проверки CakePHP 3.x

Вот функция проверки в CakePHP 3.x для PostsTable:

public function validationDefault(Validator $validator)
{
    $validator
        ->add('id', 'valid', ['rule' => 'numeric'])
        ->allowEmpty('id', 'create');

    $validator
        ->requirePresence('title', 'create')
        ->notEmpty('title','Please fill Title field');

    $validator
        ->requirePresence('content', 'create')
        ->notEmpty('content','Please add a Content');

    return $validator;
}

Форма в представлении add:

<?= $this->Form->create($post) ?>
<fieldset>
    <legend><?= __('Add Post') ?></legend>
    <?php
        echo $this->Form->input('title');
        echo $this->Form->input('content');
        echo $this->Form->input('category_id', ['options' => $categories]);
    ?>
</fieldset>
<?= $this->Form->button(__('Submit')) ?>
<?= $this->Form->end() ?>

Почему вместо сообщения notEmpty всегда отображается сообщение проверки по умолчанию?


person Br.sasa    schedule 09.01.2016    source источник
comment
Вероятно, это вызывает первое правило, у которого нет пользовательского сообщения. Попробуйте добавить сообщение.   -  person Inigo Flores    schedule 09.01.2016
comment
Я уже пытался добавить собственное сообщение, но оно все еще не работает, в чем проблема?   -  person Br.sasa    schedule 10.01.2016
comment
Какое именно сообщение вы видите? Для какого поля? И какие данные вы предоставляете (если есть)? Вы проверили, что ваш метод validationDefault() вообще вызывается? Также какую точную версию CakePHP вы используете?   -  person ndm    schedule 10.01.2016
comment
когда я нажимаю кнопку отправки для добавления нового сообщения, вызывается validationDefault(), но мое пользовательское сообщение об ошибке вообще не появляется, каждый раз, когда отображается сообщение об ошибке cakephp по умолчанию. Пожалуйста, заполните это поле, я использую cakephp-3-1 -6   -  person Br.sasa    schedule 10.01.2016
comment
Проблема исправлена, я переименовал validationDefault(Validator $validator) в validationPost(Validator $validator), я также сделал эту модификацию внутри PostsController add function: $post = $this->Posts->patchEntity($post, $this->request->data,['validate' => 'Post']);   -  person Br.sasa    schedule 10.01.2016


Ответы (1)


Проблема исправлена, я переименовал validationDefault(Validator $validator) в validationPost(Validator $validator), я также сделал эту модификацию внутри PostsController, добавив функцию:

$post = $this->Posts->patchEntity($post, $this->request->data,['validate' => 'Post']);
person Br.sasa    schedule 23.01.2016