Ich versuche die eingebauten Validierungsfunktionen von cakePHP für meine Registrierungs-/Anmeldeseite zu verwenden.Wie bekomme ich die eingebauten Validierungsfehlermeldungen von CakePHP angezeigt?
<?php
class User extends AppModel
{
var $name = 'User';
var $validate = array(
'name' => VALID_NOT_EMPTY,
'password' => VALID_NOT_EMPTY,
'email_id' => VALID_EMAIL
);
}
Ich habe keine separate View-Datei für die Registrierung oder Anmeldung. Ich habe sowohl die Registrierung und Login-Code der Anwendung in einem Hauptcontroller und die Ansichten in einer einzigen index.ctp-Datei. Wenn die Registrierung oder Anmeldung gültig ist, wird die Seite auf die Startseite des Hauptcontrollers umgeleitet.
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');
?>
ist, warum werden die benutzerdefinierten Fehlermeldungen nicht angezeigt. Wenn ich eine separate Ansichtsdatei für das Registermodul habe, erhalte ich die benutzerdefinierten Nachrichten.
Aber ich möchte nicht eine separate Register-View-Datei und eine separate Login-View-Datei. Ich möchte beide Funktionen in der Indexdatei des Hauptcontrollers haben. Kannst du mir helfen?
EDIT 1
Wenn ich machen verwenden, ist es das, was ich im Browser bekommen.
Ihre Registrierung fehlgeschlagen.
nicht gefunden
Fehler: Die angeforderte Adresse '/ users/register' wurde auf diesem Server nicht gefunden.
Dies ist die Registerfunktion in Hauptsteuerung:
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');
}
}
}
Die Fehlermeldungen werden nur angezeigt, wenn ich eine separate register.ctp-Datei im Ordner views/users habe. Wenn ich das Steuerelement auf die Hauptseite umleiten, wenn die Registrierung fehlschlägt, bekomme ich die Session setFlash-Nachricht, aber nicht die Fehlermeldungen. Nur wenn es eine separate View-Datei für die Registeraktion gibt, werden die Fehlermeldungen angezeigt. – Angeline
Die Validierungsnachrichten würden zurück in die Ansicht geladen und im Gegensatz zu setFlash nicht in der Sitzung gespeichert. Wenn Sie umleiten, werden Sie effektiv die Fehlermeldungen verlieren. Möglicherweise müssen Sie $ this-> render ('index') im Controller für die Registermethode verwenden, so dass Sie keine Umleitung benötigen. – MSR