CakePHP validation
-
26-09-2019 - |
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');
}
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!