Question

J'utilise un contrôleur qui compte ne marche pas avoir sa propre table, mais utilise le modèle utilisateur.

Tout fonctionne très bien, sauf - lorsque je valide toute forme. Il dit que la validation échoue (lorsque je tente d'échouer la validation pour vérifier), mais ne marche pas jeter l'erreur en dessous du champ

Voir

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

Action Controller

            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');
            }
Était-ce utile?

La solution

Essayez debug()ing le contenu de $this->validationErrors dans votre point de vue, ainsi que $this->data dans votre contrôleur juste après une soumission de formulaire. Cela devrait vous donner beaucoup plus d'informations pour travailler.

Je soupçonne que votre problème est le gâteau est la construction entrées formulaire basé sur le mauvais modèle - forment la construction des champs pour Account.id et Account.password au lieu de User.id et User.password. En effet, FormHelper prend son modèle par défaut du contrôleur / voir qu'il est appelé à partir, ce qui dans votre cas apparaît AccountsController.

Afin de générer les User.id et User.password champs traitement de soumission de votre contrôleur de attend, vous devrez précédez User. dans vos appels FormHelper. Ainsi:

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

Autres conseils

Avez-vous essayé:

echo $session->flash();

Notez que quel que soit le manuel dit, il revient, pas d'échos. Je journalisé cet un certain temps et il a été changé dans le 1.3 manuel, mais pas le 1.2.

Salut vous qui pose
Si vous voulez afficher message d'erreur retour de validate de userModel de
Vous pouvez ajouter du code ligne ci-dessous après formulaire de saisie mot de passe

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

et si vous voulez afficher message d'erreur ensemble par la méthode setFlash
vous devez rediriger la page puis utilisez $ this-> Session-> flash ( 'flash nom') à la page que vous voulez montrer

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

Bonne chance!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top