Но, похоже, нет
ответ ... и
содержимое #message_board
опорожняется.
Это потому, что вы не установили, какое действие / представление визуализировать. Вы должны сделать это вручную, так как $this->autoRender
установлен на false
. Вы можете использовать render()
для этого. Больше информации можно найти на соответствующей странице кулинарной книги .
Если для $this->autoRender
установлено значение true
, то содержимое #message_board будет заменено содержимым add.ctp
Флэш-сообщение «Добавить действие называется»
НЕ устанавливается с контроллера (или любого другого
флэш-сообщений, в этом отношении)
Я думаю, вам нужно обновить страницу или часть, содержащую бит $this->Session->flash()
, чтобы появлялись флеш-сообщения.
Тот факт, что при обновлении страницы появилось флэш-сообщение, означает, что он вызвал и выполнил действие.
AFAIK, вы можете поместить / напечатать только одно сообщение с флэш-ключа в массиве Messages
. Клавиша флеш-памяти - это место, где флеш-сообщения хранятся по умолчанию. Каждый вызов setFlash()
будет перезаписывать флэш-сообщение, установленное для более старых вызовов.
Поскольку отображалось только второе флэш-сообщение, мы могли бы сказать, что оно не прошло при прохождении хотя бы одного из условий после второго вызова setFlash()
в контроллере. Возможно, вы захотите поставить операторы debug($this->data)
рядом с условиями, относящимися к $this->data
, чтобы помочь себе в отладке вашей проблемы.
Вы также можете использовать debug()
, чтобы узнать, прошло ли ваше приложение определенное действие или путь, так как оно почти всегда будет отображаться.
Таким образом, вы можете сделать следующее, чтобы проверить, прошло ли это условие:
if(!empty($this->data)) {
debug('Passed!');
Если «Пройдено!» будет напечатан после отправки формы, мы будем знать, что он прошел это условие.
Однако новое сообщение не было сохранено
Это может быть из-за того, что $ data пуст или не прошел проверку. Если ваш $data
не пустой, возможно, при проверке произошел сбой, и поскольку ваша форма не отображает ошибки проверки; Вы, возможно, никогда не заметили их. Один из способов узнать, прошел ли он проверку, заключается в следующем:
$this->Message->set($this->data);
if ($this->Message->validates()) {
debug('it validated logic');
} else {
debug('didn't validate logic');
}