Rom*_*man 11 php codeigniter class-visibility codeigniter-classloader
我的codeigniter应用程序中有一个控制器"user".该控制器具有以下功能logged_user_only():
public function logged_user_only()
{
$is_logged = $this -> is_logged();
if( $is_logged === FALSE)
{
redirect('user/login_form');
}
}
Run Code Online (Sandbox Code Playgroud)
由于此函数调用另一个被调用的函数is_logged(),它仅检查会话是否已设置,如果是,则返回true,否则返回false.
现在,如果我将此函数放在同一控制器内的任何函数的开头,它将检查用户是否未被记录,它将重定向到login_form否则继续.这很好用.例如,
public function show_home()
{
$this -> logged_user_only();
$this->load->view('show_home_view');
}
Run Code Online (Sandbox Code Playgroud)
现在我想logged_user_only()在另一个控制器的函数中调用此函数来检查用户是否已登录?
PS.如果无法做到这一点,或者不推荐,我应该在多个控制器中将此功能放在哪里?谢谢.
sim*_*nom 15
为什么不扩展控制器,以便登录方法在MY控制器内(在应用程序的核心文件夹中),所有其他控制器都扩展它.例如,您可以:
class MY_Controller extends CI_Controller {
public function is_logged()
{
//Your code here
}
}
Run Code Online (Sandbox Code Playgroud)
然后你的主控制器可以扩展如下:
class Home_Controller extends MY_Controller {
public function show_home()
{
if (!$this->is_logged()) {
return false;
}
}
}
Run Code Online (Sandbox Code Playgroud)
欲了解更多信息,请访 创建核心系统类
新链接在这里:https: //www.codeigniter.com/user_guide/general/core_classes.html?highlight = core%20classes
使用CI无法从另一个控制器调用控制器,不推荐使用.
要么转移logged_user_only到帮助器,要么更好的是从(MY_Controller)扩展所有控制器的核心控制器,请参阅http://codeigniter.com/wiki/MY_Controller_-_how_to_extend_the_CI_Controller/
小智 5
只需从控制器将用户控制器加载为库
function __construct(){
parent::__construct();
$this->load->library('../controllers/user');
}
Run Code Online (Sandbox Code Playgroud)
现在,在控制器中的任何位置调用用户控制器的此功能,
$this->user->logged_user_only();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
55548 次 |
| 最近记录: |