我目前正在开发一个需要(主)管理员特定控件的网站。我有两个控制器,一个用于加载login
页面,另一个用于加载edit_profile
页面。在加载“编辑配置文件”页面之前,它会检查用户是否已登录。我这样做:
/* edit_profile.php */
<?php if(!$this->session->user_data('logged_in')) header ("Location: " . base_url('login')); ?>
我听说CI没有办法从另一个控制器调用控制器。可以这样调用其他控制器吗?编程错了吗?如果它是一个,还有另一种方式吗?
答案 0 :(得分:0)
MVC旨在分离应用程序中职责的角色。所有演示文稿(包括标题)都应通过视图完成。这并不意味着标题重定向有任何问题,因为这是常见做法...安全网站?未登录?重定向。
根据登录控制器在显示视图(登录表单等)之前所执行的操作,您可能只能在未登录的情况下加载登录视图,如果登录则可以加载edit_profile视图。可能有很多方法可以解决这个问题,每个方法本身都是独一无二的。
你的建议会起作用,我不能老实说它有错误的。这恰好违背了MVC的设计原则。
答案 1 :(得分: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);
}
}