0

我目前正在一个需要(主)管理员特定控件的站点上工作。我有两个控制器,一个用于加载login页面,另一个用于加载edit_profile页面。在加载 Edit Profile 页面之前,它会检查用户是否已登录。我这样做:

/* edit_profile.php */

<?php if(!$this->session->user_data('logged_in')) header ("Location: " . base_url('login')); ?>

我听说 CI 没有办法从另一个人那里调用控制器。可以这样调用另一个控制器吗?这是糟糕的编程吗?如果是一个,还有另一种方法吗?

4

2 回答 2

0

MVC 旨在分离应用程序中职责的角色。所有的展示,包括标题,都应该通过一个视图来完成。但这并不意味着标头重定向有任何问题,因为这是常见的做法……安全站点?未登录?重定向。

根据您的登录控制器在显示视图(登录表单等)之前所做的事情,您可能只能在未登录的情况下加载登录视图,如果他们已登录,则可以加载 edit_profile 视图。可能有很多处理这个问题的方法很少,而且每种方法本身都是独一无二的。

你的提议会奏效,老实说,我不能说它有什么问题。它只是违背了 MVC 的设计原则。

于 2013-06-14T09:22:00.963 回答
0

他的呢?如果用户已登录,则从模型加载用户详细信息。

function login()
{
    if(!$this->session->user_data('logged_in'))
    {
        $data['msg'] = "Not logged in";
        $this->load->view('login_form',$data);

    } else {

        $data['user_details'] = // call to some sort of user model?     
        $this->load->view('edit_profile',$data);
    }           
}
于 2013-06-17T11:44:19.233 回答