MVCは私にとってかなり新しい概念であり、「良い習慣」と見なされるかどうか確信が持てないことをしていることに気づきました。
すべてのユーザー関連アクションを処理するコントローラーUser
(から拡張) があります。CUserController
このコントローラーではactionLogin
、ログイン要求を処理します。ログインの過程で、状況に応じて 3 つの異なるページを表示する必要があります。
- ログインフォーム(ユーザー名/パスワードを入力)。
- エラー メッセージ (ユーザーの詳細は一致するが、アカウントがブロックされているとマークされている場合)。
- ログイン成功ページ (新しいメッセージがアカウントに関連付けられている場合)。
これまでのところ、次のように対処しています。
public function actionLogin(){
... perform some operations ...
... determine which page to display and set $scenario accordingly ...
$this->render('login',array(
'scenario'=>$scenario
));
}
そして、login.php
(ビューファイル)で:
... perform some common operations ...
switch($scenario){
case "login":
...display login...
break;
case "error":
... display error ...
break;
.. etc. ...
}
これにより、実際にはビュー ファイルにまったく異なるページが表示されます (密接に関連していますが)。
ビューを別のページ (例: login-form.php
、login-error.php
、login-success.php
) に分割し、状況に応じて別のページをレンダリングする方がよいでしょうかactionLogin
、それとも現在私がこれに対処する良い方法ですか?