2009-07-30 15 views
0

登録/ログインページにcakePHPの組み込み検証機能を使用しようとしています。CakePHPのビルトイン検証エラーメッセージを表示する方法は?

<?php 
class User extends AppModel 
{ 
    var $name = 'User'; 
    var $validate = array(
          'name' => VALID_NOT_EMPTY, 
          'password' => VALID_NOT_EMPTY, 
          'email_id' => VALID_EMAIL 
         ); 
} 

私は登録またはログインのための別個のビューファイルを持っていません。メインコントローラーにアプリケーションの登録コードとログインコードがあり、viewは単一のindex.ctpファイルにあります。登録またはログインが有効な場合、ページはメインコントローラのホームページにリダイレクトされます。

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

なぜ、カスタムエラーメッセージが表示されないということです。なぜなら、私はレジスタモジュールのための別々のビューファイルを持っている、私はカスタムメッセージを取得するので。

しかし、別のレジスタビューファイルと別のログインビューファイルは必要ありません。私は両方の機能をメインコントローラのインデックスファイルに入れたい。私たちを手伝ってくれますか?

EDIT 1

私はレンダリングを使用する場合、これは私がブラウザで得るものです。

登録に失敗しました。要求されたアドレス「/ユーザー/登録」このサーバー上に見つかりませんでした。

エラーが見つかりません。

これは、メインコントローラ内のレジスタ機能である:あなたが同じモデルを使用する2つのフォームを作成しているので、

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

     } 
    } 

答えて

0

が起こっている紛争があるかもしれません。ログインフォームをコメントアウトすると、エラーメッセージが表示されますか?

+0

エラーメッセージは、views/usersフォルダに別のregister.ctpファイルがある場合にのみ表示されます。コントロールをメインページにリダイレクトすると、登録が失敗したときに、セッションのsetFlashメッセージが表示されますが、エラーメッセージは表示されません。登録アクション用の個別のビューファイルがある場合にのみ、エラーメッセージが表示されます。 – Angeline

+0

検証メッセージはビューに戻され、setFlashとは異なりセッションに保存されません。リダイレクトすると、エラーメッセージが実質的に失われます。 登録メソッドのコントローラで$ this-> render( 'index')を使う必要があるかもしれないので、リダイレクトは必要ありません。 – MSR

関連する問題