CakePHP: mensaje de validación que no muestra

Soy nuevo en CakePHP y he hecho una forma simple siguiendo algunos tutoriales. En este formulario html, he usado la validación. Ahora el problema es que la validación está funcionando pero el mensaje no muestra qué quiero mostrar. Intento el código a continuación,

Modelo

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' ) ) ); 

Controlador

 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!'); } } } 

Ver

 

Add New Post

Form->create('Post', array('action'=>'add')); echo $this->Form->input('title'); echo $this->Form->input('body'); echo $this->Form->end('Create Post'); ?>

El error de validación que he visto pero no es el mensaje que mencioné en mi controlador

enter image description here

Eso es una validación de navegador incorporada.

Desde 2.3, el atributo requerido HTML5 también se agregará a la entrada en función de las reglas de validación.

Su title tiene la regla notEmpty , por lo que Cake está emitiendo

y su navegador está activando ese mensaje.

Editar: para anular este comportamiento, puede hacer:

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

o

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

Cuando envíe el formulario, se activará la validación de su modelo.

Desde tu código, lo que puedo ver es que no has incluido ayudantes.

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

Solo agregue a sus controladores y pruebe …

Sus opciones Form-create () no son válidas, el primer argumento es el nombre del modelo, el segundo es para las opciones:

 

Add New Post

Form->create('Post', array('action'=>'add')); echo $this->Form->input('title'); echo $this->Form->input('body'); echo $this->Form->end('Create Post'); ?>

Si el formulario-ayudante no sabe para qué ‘modelo’ está creando un formulario, no verificaré la validación del campo en el lugar correcto, por lo tanto, no generará los errores de validación para ‘título’

[actualización] la solución anterior no resolvió el problema. OP ha modificado la pregunta

Algunas ideas:

  1. Asegúrese de habilitar ‘depurar’ (App / Config / core.php configurar Configure::write('debug', 2); De lo contrario, CakePHP puede estar usando una versión ‘en caché’ de su modelo.

  2. Si ha nombrado incorrectamente su Modelo, Cake puede generar automáticamente un modelo para usted, en cuyo caso su propio modelo nunca se usa realmente, intente depurarlo para ver si incluso ‘accedemos’ a su modelo:

Agregue esto a su modelo;

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