Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: CakePHP как передать validationErrors в SetFlash?
Форумы портала PHP.SU » » CMS и фреймворки » CakePHP как передать validationErrors в SetFlash?

Страниц (1): [1]
 

1. Васенька - 01 Августа, 2012 - 20:55:49 - перейти к сообщению
Привет, я делаю небольшую контактную форму для своего сайта.
Кейк версии 2.2.1

Модель
PHP:
скопировать код в буфер обмена
  1.  
  2. class Contact extends AppModel {
  3. public $useTable = false;
  4. public $validate = array(
  5.     'name' => array(
  6.         'rule' => 'notEmpty',
  7.         'message' => 'Field name must be not empty'
  8.     ),
  9.     'email' => 'email',
  10.     'message' => array(
  11.         'rule' => 'notEmpty',
  12.         'message' => 'Field message must be not empty'
  13.     )
  14. );
  15. }
  16.  


Контроллер
PHP:
скопировать код в буфер обмена
  1.  
  2. class ContactsController extends AppController {
  3. public $helpers = array('Html', 'Form');
  4.  
  5. public function index() {
  6.  
  7. }
  8.  
  9. public function send() {
  10. $this->Contact->set($this->request->data);
  11. if ($this->Contact->validates()) {
  12. //sending mail logic
  13.         };
  14.                                 } else {
  15. // didn't validate logic
  16. $errors = $this->Contact->validationErrors;
  17.  
  18. }
  19. }
  20. }
  21. }
  22.  

View index.ctp

PHP:
скопировать код в буфер обмена
  1. echo $this->Form->create('Contact', array('action' => 'send'));
  2. echo $this->Form->input('name', array('label' => 'Your name:'));
  3. echo $this->Form->input('email', array('label' => 'Your e-mail:'));
  4. echo $this->Form->input('message', array('rows' => '6', 'label' => 'Your message:'));
  5. echo $this->Form->end('Send button');
  6.  
  7. echo $this->Session->flash();


Не могу понять как мне вывести в вид массив с ошибками валидации который получается в $errors. Пробовал передавать $errors в SetFlash но видимо делаю что-то неправильно т.к. на выходе получается вывод слова Array () или 1.

Для теста выводил $errors в print_r там всё ок, массив с ошибками создаётся.
2. LIME - 01 Августа, 2012 - 20:58:09 - перейти к сообщению
в цикле вывести каждый элемент
ну или array_map
3. Васенька - 01 Августа, 2012 - 21:00:06 - перейти к сообщению
В цикле - в смысле забить на SetFlash, передать $errors в вид и там уже его прогнать через foreach если $errors существует и не пустой?
4. LIME - 01 Августа, 2012 - 21:05:53 - перейти к сообщению
хз...я только дал понять что вывод массива целиком не получится
возможно надо прогнать по массиву вызывая SetFlash (хз что это такое) для каждого элемента
5. Васенька - 01 Августа, 2012 - 21:07:46 - перейти к сообщению
LIME пишет:
хз...я только дал понять что вывод массива целиком не получится
возможно надо прогнать по массиву вызывая SetFlash (хз что это такое) для каждого элемента


Это $this->Session->setFlash('сообщение.');
Прогонять пробовал, результат никакой.

 

Powered by ExBB FM 1.0 RC1