我目前正忙于一个项目,该项目需要用户在首次登录时转到特定页面创建个人资料(尚未创建个人资料)。老实说,我不知道从哪里开始。我想以一种好的方式做到这一点。
简而言之:
User signs up -> logs in -> needs to fill in form before anything else is allowed -> continue to rest of application
问题:这样做的方法是什么?一个解决方案,不会在将来的应用程序开发中给我带来麻烦。
答案 0 :(得分:1)
我建议您使用filters。在需要完成配置文件的每个控制器中,添加以下代码:
public function filters() { return array( 'completedProfile + method1, method2, method3', // Replace your actions here ); }
在您的基本控制器中(如果您不在任何控制器中使用基本控制器),您需要使用simular代码创建名为completedProfile的过滤器:
public function filterCompletedProfile($filterChain) { $criteria = new CDBCriteria(array( 'condition' => 'id = :id AND firstname IS NOT NULL AND lastname IS NOT NULL', 'params' => array(':id' => Yii::app()->user->getId()) )); $count = User::model()->count($criteria); if ($count == 1) { $filterChain->run(); } else { $this->redirect(array('user/profile')); } }
答案 1 :(得分:0)
可能会在用户个人资料数据库表中添加一个字段,表示他们是否填写了他们的个人资料信息。像profile_complete
这样的东西。然后,您可以在页面上进行测试以查看profile_complete
是否为真,如果是,则显示页面,如果没有则显示该页面。