CakePHP: сообщение проверки не отображается

Я новичок в cakePHP, и я сделал одну простую форму после некоторого учебника. В этой html-форме я использовал проверку. Теперь проблема заключается в том, что валидация работает, но сообщение не отображает то, что я хочу отобразить. Я пробую код ниже,

Модель

public $validate = array( 'title' => array( 'title_required' => array( 'rule' => 'notEmpty', 'message' => 'This is required field' ), 'title_unique' => array( 'rule' => 'isUnique', 'message' => 'This should be unique title' ) ) ); 

контроллер

 public function add() { if ($this->request->data) { if ($this->Post->save($this->request->data)) { $this->Session->setFlash('Post has been added successfully'); $this->redirect(array('action' => 'index')); } else { $this->Session->setFlash('Error occured, Please try agan later!'); } } } 

Посмотреть

 <h2>Add New Post</h2> <?php echo $this->Form->create('Post', array('action'=>'add')); echo $this->Form->input('title'); echo $this->Form->input('body'); echo $this->Form->end('Create Post'); ?> 

Ошибка проверки, которую я видел, но не сообщение, которое я упомянул в контроллере

введите описание изображения здесь

Это встроенная проверка браузера.

Начиная с 2.3, требуемый атрибут HTML5 также будет добавлен к вводу на основе правил проверки.

В вашем title есть правило notEmpty , поэтому Cake notEmpty

<input type="text" required="required" ..

и ваш браузер запускает это сообщение.

Изменить: чтобы переопределить это поведение, вы можете:

 $this->Form->input('title', array('required'=>false)); 

или

 $this->Form->submit('Submit', array('formnovalidate' => true)); 

Когда вы отправляете форму, ваша проверка модели будет срабатывать.

Из вашего кода я вижу, что вы не включали помощников.

 public $helpers = array('Html', 'Form', 'Session'); public $components = array('Session'); 

Просто добавьте свои контроллеры и попробуйте.

Параметры Form-create () недопустимы, первым аргументом является имя модели, второе – для параметров:

 <h2>Add New Post</h2> <?php echo $this->Form->create('Post', array('action'=>'add')); echo $this->Form->input('title'); echo $this->Form->input('body'); echo $this->Form->end('Create Post'); ?> 

Если хелпер формы не знает, какая «модель» создает форму для, я не буду проверять правильность поля в правильном месте, следовательно, он не выведет ошибки проверки для «title»,

[update] решение выше не решило проблему. ОП изменил вопрос

Некоторые идеи:

  1. Обязательно включите «debug» (приложение / Config / core.php set Configure::write('debug', 2); В противном случае CakePHP может использовать «кэшированную» версию вашей модели.

  2. Если вы неправильно указали свою модель, Cake может автоматически генерировать модель для вас, и в этом случае ваша собственная модель никогда не используется на самом деле, попробуйте это для отладки, чтобы убедиться, что мы даже «добрались» до вашей модели:

Добавьте это в свою модель;

 public function beforeValidate($options = array) { debug($this->data); exit(); }