Domanda

Sto usando un controller di account, che pretende molto avere un proprio tavolo, ma usi utente modello.

Tutto funziona bene, tranne - quando ho convalidare qualsiasi forma. Si dice convalida non riesce (quando provo a fallire la convalida per controllare), ma pretende molto gettare l'errore sotto il campo

Visualizza

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

Azione di controllo

            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');
            }
È stato utile?

Soluzione

Prova debug()ing il contenuto del $this->validationErrors a vostro parere, così come $this->data nel controller solo dopo un invio di un modulo. Questo dovrebbe dare molte più informazioni su cui lavorare.

ho il sospetto che il vostro problema è Cake è la costruzione di input del form sulla base del modello sbagliato - la costruzione di campi di modulo per Account.id e Account.password invece di User.id e User.password. Questo perché FormHelper prende il suo modello di default dal controller / vista viene invocato da, che nel tuo caso appare AccountsController.

Al fine di generare il User.id e User.password campi si aspetta di movimentazione presentazione del controller, avrete bisogno di anteporre User. nelle chiamate FormHelper. Così:

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

Altri suggerimenti

Hai provato:

echo $session->flash();

Si noti che qualunque sia il manuale dice, restituisce, senza echi. Mi sono collegato questo un po 'indietro ed è stato cambiato nel manuale di 1.3, ma non il 1.2.

Ciao voi che sta chiedendo
Se si desidera visualizzare l'errore-messaggio che di ritorno da di UserModel validate
Quindi è possibile aggiungere codice linea soffietto dopo la password modulo di input

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

e se si desidera visualizzare l'errore-messaggio che insieme con il metodo di setFlash
è necessario reindirizzare la pagina e quindi utilizzare $ this-> session-> flash ( 'Flash-name') nella pagina che si desidera mostrare

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

In bocca al lupo!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top