Сообщения об ошибках проверки CakePHP - как их передавать? - PullRequest
0 голосов
/ 28 декабря 2010

Обратите внимание: я больше не пытаюсь сделать это, потому что я нашел альтернативу, но в будущем может быть полезно узнать ответ.

У меня есть форма, которая находится в представлении(index.ctp), связанный с действием index () на контроллере.Эта форма должна отправлять данные другому действию contact () в том же контроллере.Это второе действие не имеет представления, оно просто обрабатывает информацию и перенаправляет пользователя в соответствии с результатом.Это действие выполняет проверку и перенаправление пользователя на реферер (в данном случае индекс) в случае ошибки, а затем ошибка должна отображаться в индексе.Обратите внимание, что модель не использует таблицу базы данных, но она используется только для определения правил проверки.

Проверка выполняется правильно и сообщает об ожидаемых ошибках.Чтобы извлечь ошибки после перенаправления, он записывает массив $ this-> ModelName-> invalidFields () в переменную сеанса, которая извлекается в действии index () после перенаправления.Этот массив передается в переменную $ errors для представления.Теперь приходит проблема.Ошибки, хотя и передаются корректно между перенаправлениями, не привязываются к соответствующим формам.Как я могу сделать это?Форма имеет все условные имена, поэтому она должна быть автоматической, но это не так.

Вот часть соответствующего кода:

Индекс:

echo $this->Form->create('Contact', array('url' => '/contacts/contact'));
echo (rest of form) ...
echo $this->Form->end(__('send message', true));

Контроллер контактов:

function index() {

    if ($this->Session->check('Contact.errors')) {
        $this->set('errors', $this->Session->read('Contact.errors'));
    }
}

function contact() {

    if (!empty($this->data)) {
        $this->Contact->set($this->data);

        if ($this->Contact->validates()) {
            (send the email)
        }
        else {
            $this->Session->write('Contact.errors', $this->Contact->invalidFields());
            $this->redirect($this->referer);
        }
    }
}

1 Ответ

0 голосов
/ 29 декабря 2010

Я не думаю, что это хорошая идея - записывать ошибки проверки в переменную сеанса.Я не эксперт CakePHP, но я не думаю, что вы должны это делать.Все ваши формы должны указывать на тот же URL-адрес, на котором вы находитесь, поэтому введенные пользователем данные не будут потеряны.

Не могли бы вы добавить код в свой вопрос?

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