J'essaie d'utiliser les fonctions de validation intégrées de cakePHP pour ma page d'enregistrement/connexion.Comment faire pour afficher les messages d'erreur de validation intégrés de CakePHP?
<?php
class User extends AppModel
{
var $name = 'User';
var $validate = array(
'name' => VALID_NOT_EMPTY,
'password' => VALID_NOT_EMPTY,
'email_id' => VALID_EMAIL
);
}
Je n'ai pas de fichier de vue séparé pour le registre ou la connexion. J'ai à la fois le code d'enregistrement et de connexion de l'application dans un contrôleur principal et les vues dans un seul fichier index.ctp. Si l'enregistrement ou la connexion est valide, la page est redirigée vers la page d'accueil du contrôleur principal.
class UsersController extends AppController
{
var $name = 'Users';
var $helpers = array('Html', 'Form');
function register()
{
if (!empty($this->data))
{
if ($this->User->save($this->data))
{
$this->Session->setFlash('Your registration information was accepted.');
$this->redirect('/main/home');
}
}
}
}
index.ctp
<p>Please fill out the form below to register an account.</p>
<?php
echo $form->create('User', array('action' => 'register'));
echo $form->input('name');
echo $form->input('email_id');
echo $form->input('password');
echo $form->end('Register');
?>
<h3>Login</h3>
<?php
echo $form->create('User',array('action'=>'login'));
echo $form->input('email_id');
echo $form->input('password');
echo $form->end('Login');
?>
Est-ce la raison pour laquelle, les messages d'erreur personnalisés ne sont pas affichés. Parce que, si j'ai un fichier de vue séparé pour le module de registre, alors je reçois les messages personnalisés. Mais je ne veux pas de fichier de vue de registre distinct et de fichier de vue de connexion séparé. Je veux avoir les deux fonctions dans le fichier d'index du contrôleur principal. Pourriez-vous m'aider?
EDIT 1
Si j'utilise rendre, ce que je reçois dans le navigateur.
Votre inscription a échoué.
Introuvable
Erreur: L'adresse demandée '/ users/register' n'a pas été trouvé sur ce serveur.
Ceci est la fonction de registre dans le contrôleur principal:
function register()
{
if (!empty($this->data))
{
if ($this->User->save($this->data))
{
$this->Session->setFlash('Your registration information was accepted.');
$this->render('home');
}
else
{
$this->Session->setFlash('Your registration failed.');
$this->render('index');
}
}
}
Les messages d'erreur sont affichés uniquement lorsque j'ai un fichier register.ctp distinct dans le dossier views/users. Si je redirige le contrôle vers la page principale, lorsque l'enregistrement échoue, j'obtiens le message Session setFlash mais pas les messages d'erreur. Ce n'est que s'il existe un fichier de vue séparé pour l'action de registre que les messages d'erreur s'affichent. – Angeline
Les messages de validation seront rechargés dans la vue et ne seront pas stockés dans la session contrairement à setFlash. Si vous redirigez, vous perdrez effectivement les messages d'erreur. Vous devrez peut-être utiliser $ this-> render ('index') dans le contrôleur pour la méthode de registre, vous n'avez donc pas besoin d'une redirection. – MSR