CakePHP проверка сообщений позиции - PullRequest
0 голосов
/ 03 ноября 2011

Обычно сообщения проверки CakePHP от таких моделей, как:

class User extends AppModel {
    public $name = 'User';
    public $validate = array(
        'username' => array(
            'required' => array(
                'rule' => array('notEmpty'),
                'message' => 'A username is required'
            ),
            'regexp' => array(
                'rule' => '/^[a-z0-9]{3,10}$/i',
                'message' => 'Only letters and integers, min 3, max. 10 characters'
            )
        )
    )
}

печатаются под входами, я имею в виду сообщения: 'message' => 'A username is required'

Так это выглядит так:

|INPUT|
[Message]

Как мне это изменить, чтобы сообщения добавлялись в массив:

$errors[] = 'Message';

И затем я хотел бы использовать foreach, чтобы напечатать их в одном месте.

Это возможно?

1 Ответ

1 голос
/ 03 ноября 2011

CakePHP имеет все ошибки проверки, доступные для представления в $ this-> validationErrors.Таким образом, я перебираю их таким образом:

<?php if ( !empty($this->validationErrors['Model']) ) { ?>
<div id="errorlist">
    <h3><a href="#">You have errors in your submission. <?php echo $warnimage; ?></a></h3>
    <div>
    <ul>
    <?php foreach( $this->validationErrors['Model'] as $val ){ ?>
        <li><?php echo $val; ?></li>
    <?php } ?>
    </ul>
    </div>
</div>
<?php } ?>

РЕДАКТИРОВАТЬ

Где разместить этот код? Поместите код в представление, где вы хотите, чтобы он отображался.

Как отключить отображение этих ошибок под входными данными? Я не отключаю это отображение, но, если вы хотите, вы можете просто сбросить $ this-> validationErrors ['Model'].(не проверено)

Другое решение заключается в использовании элементов, как показано в этой статье Майлза Джонсона .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...