我想在codeigniter中更改我的默认控制器是否可能?对于我想要显示不同控制器的客人和另外一个
的会员if($this->cuser->usercode()){
//loading default controller
$route['memebers_welcome'];
}else{
$route['guests_welcome'];
}
如果有可能请提示,否则我将不得不使用重定向功能,我认为这不是一个好习惯。
答案 0 :(得分:3)
或许对这个问题有不同的看法。而不是根据用户是否登录来尝试选择控制器,让“欢迎”控制器为登录用户或未登录用户加载不同视图是很常见的。
class Welcome extends CI_Controller {
public function index() {
# ...
if ($this->cuser->usercode()) {
$this->load->view('members_welcome');
} else {
$this->load->view('guests_welcome');
}
}
# ...
}
或者,如果有完全独立的逻辑组来制作单独的函数,则可以轻松调用另一个控制器方法而无需重新加载页面。
class Welcome extends CI_Controller {
public function index() {
if ($this->cuser->usercode()) {
$this->_members_welcome();
} else {
$this->_guests_welcome();
}
}
private function _members_welcome() {
# ... do stuff for members
}
private function _guests_welcome() {
# ... do stuff for guests
}
}
使用这种方法来实际指导用户要好得多,因为你不希望造成不必要的开销和页面加载。
答案 1 :(得分:1)
我不这么认为。您不能因为更改控制器,首先必须确定用户是否已登录,您可以在控制器内检查这个,这是最简单/最合适的方式,AFAIK。
因此,只需为两种类型的用户保留默认控制器,并检查用户类型,并在用户不是成员的情况下从该控制器/页面重定向到新的控制器/页面。你可以在默认控制器的构造函数中检查这个。