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
还是我目前做的处理这个的好方法?