2009-07-30 6 views
0

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

     } 
    } 

Antwort

0

Es könnte ein Konflikt geht, weil man zwei Formen ist zu schaffen, die das gleiche Modell verwenden. Wenn Sie das Login-Formular auskommentieren, erscheinen dann die Fehlermeldungen?

+0

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

+0

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

Verwandte Themen