1

我目前正忙于一个项目,该项目需要用户在第一次登录时转到特定页面以创建个人资料(并且尚未创建个人资料)。老实说,我不知道从哪里开始。我想以一种好的方式做到这一点。

简而言之:

User signs up -> logs in -> needs to fill in form before anything else is allowed -> continue to rest of application

问题:有什么巧妙的方法可以做到这一点?在应用程序的未来开发中不会给我带来问题的解决方案。

4

2 回答 2

1

我建议你使用过滤器。在需要完整配置文件的每个控制器中添加以下代码:

    公共功能过滤器(){
        返回数组(
            'completedProfile + method1, method2, method3', // 在此处替换您的操作
        );
    }

在您的基本控制器中(如果您不使用基本控制器,则在任何控制器中)您需要使用类似代码创建名为 completedProfile 的过滤器:

    公共函数 filterCompletedProfile($filterChain) {
        $criteria = 新 CDBCriteria(数组(
            '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);

        如果 ($count == 1) {
            $filterChain->run();
        } 别的 {
            $this->redirect(array('user/profile'));
        }
    }
于 2013-10-29T21:32:32.360 回答
0

可能在用户资料数据库表中添加一个字段,表示他们是否填写了资料信息。类似的东西profile_complete。然后您可以在页面上进行测试以查看是否profile_complete为真,如果是则显示页面,如果不是则显示个人资料页面。

于 2013-10-29T17:51:00.403 回答