Bonjour à tous, voilà je me trouve face à un problème assez complexe avec cakePHP : je sécurise mon site grâce au composant Auth (jusqu'ici rien de bien méchant). Afin d'améliorer l'ergonomie, je souhaite proposer aux utilisateurs disposant de javascript un interface d'inscription/connexion dans des lightbox. Le formulaire est donc codé dans le layout principal de l'application et redirige les données postées vers une action signup située dans un controlleur Users. Là les données sont traitées tout a fait classiquement et l'utilisateur est ensuite redirigé vers la page d'où il vient avec $this->referer(); Le problème se situe dans les erreurs de validation : elle ne sont évidemment pas transmises jusqu'à cette page et s'arrêtent à l'action signup dont la vue n'existe pas puisqu'elle n'est jamais utilisée. Je cherche donc à transmettre (si elles existent) les erreurs de validation lors de la redirection afin de les afficher dans le formulaire qui est alors automatiquement visible (la lightbox est systématiquement ouverte lorsqu'il y a des erreurs de validation). Je cherche donc à : Transmettre les erreurs de validation lors de la redirection Les afficher dans le formulaire ;)** Malheureusment je ne suis pas sur que cakephp intègre des fonction qui permette facilement ceci, mais je suis sur que c'est possible à réaliser. Si vous avez des idées, n'hésitez pas ;) Merci d'avance pour les réponses a+
Bonjour,
Dans ce cas il faut en effet passer par la Session.
Une méthode (non testée) serait de faire quelque chose comme ceci :
<?php
// dans UsersController::register()
if (!$this->User->save($data)) {
$this->Session->write('User.validationErrors', $this->User->invalidFields());
$this->redirect($this->referer());
}
?>
<?php
// Dans l'action de la page d'accueil
if ($this->Session->check('User.validationErrors')) {
$this->validationErrors = $this->Session->read('User.validationErrors');
$this->Session->delete('User.validationErrors');
}
?>
Ainsi les erreurs de validation devraient être transmises d'une page à l'autre.
Salut,
Juste avant d'effectuer une redirection, fait un
<?php
$this->Session->setFlash('Ton message');
?>
Ensuite pour afficher le message au niveau de ton formulaire, il te suffit de faire
<?php
echo $this->Session->flash();
?>
Le problème c'est qu'avec cette solution le message n'est pas personnalisé en fonction des erreurs comme le permet le composant de validation de cakephp
Merci beaucoup je le disais bien qu'on était obligé de passer par les sessions.
Cette solution est la bonne ;)
Merci