Pregunta

Estoy utilizando un controlador de la cuenta, que doesnt tiene su propia mesa, pero usos del usuario Modelo.

Todo funciona bien, excepto - cuando puedo validar cualquier forma. Se dice que no pasa la validación (cuando trato de fallar la validación para comprobar) pero tampoco tirar el error debajo del campo

Ver

<?php echo $this->Form->input('id'); ?>
              <label for="UserPassword">New Password:</label>
              <?php echo $this->Form->text('password', array('type' => 'password', 'value' => 'harsha')); ?><em>Password must be min 6 characters.</em> <?php echo $form->error('password'); ?>

Acción controlador

            if($this->User->saveField('password', $this->data['User']['password'], array('validate' => 'first'))) {
                $this->Session->setFlash('Password has been changed.', 'flash-success');
            } else {
                $this->Session->setFlash('There was some problem with our system. Please try after some time.', 'flash-warning');
            }
¿Fue útil?

Solución

Trate debug()ing el contenido de $this->validationErrors en su opinión, así como $this->data en su controlador justo después de un envío del formulario. Esto debería dar mucha más información para trabajar.

sospecho que su problema es la torta es la construcción de entradas de formulario basado en el modelo equivocado - la construcción de campos de formulario para Account.id y Account.password en lugar de User.id y User.password. Esto se debe a FormHelper toma su modelo por defecto del controlador / opinión, es invocado desde, que en su caso aparece AccountsController.

Con el fin de generar la User.id y User.password campos Espera manipulación presentación de su controlador, que tendrá que anteponer User. en sus llamadas FormHelper. Así:

$this->Form->input('User.id');
$this->Form->text('User.password');

Otros consejos

¿Usted ha intentado:

echo $session->flash();

Tenga en cuenta que lo que dice el manual, devuelve, no ecos. Me he registrado este hace un tiempo y se ha cambiado en el manual de 1.3, pero no el 1.2.

Hola ustedes que está pidiendo
Si desea mostrar de mensajes de error que el regreso de validación de UserModel
para que pueda agregar código de línea abajo después formulario de entrada de contraseña

  <?php 
      if ($this->Form->isFieldError('password')) { 
       echo $this->Form->error('password', array('class' => 'error')); 
    ?>

y si quieres mostrar de mensajes de error al fijado por el método setFlash
debe redirigir la página y luego usar $ this-> Session-> flash ( 'flash nombre') en la página que desea mostrar

   <?php
    //in UsersController
    $this->Session->setFlash('message here', 'flash-name');
    //in view
    echo $this->Session->flash('flash-name');
   ?>

Buena suerte!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top