在CodeIgniter中调用另一个Controller中的Controller函数
我的 codeigniter 应用程序中有一个控制器“用户”。该控制器有一个名为 logged_user_only()
的函数:
public function logged_user_only()
{
$is_logged = $this -> is_logged();
if( $is_logged === FALSE)
{
redirect('user/login_form');
}
}
由于此函数调用另一个名为 is_logged()
的函数,该函数仅检查会话是否已设置,如果是,则返回 true,否则返回 false。
现在,如果我将此函数放在同一控制器内任何函数的开头,它将检查用户是否未登录,否则将重定向到 login_form
否则继续。这很好用。 例如,
public function show_home()
{
$this -> logged_user_only();
$this->load->view('show_home_view');
}
现在我想在另一个控制器的函数中调用这个 logged_user_only()
函数来检查用户是否登录?
附言。如果不能这样做,或者不建议这样做,我应该将该功能放在哪里以便在多个控制器中访问?谢谢。
I have a controller "user" in my codeigniter application. This controller has a function called logged_user_only()
:
public function logged_user_only()
{
$is_logged = $this -> is_logged();
if( $is_logged === FALSE)
{
redirect('user/login_form');
}
}
As this function calls another function called is_logged()
, which just checks if the session is set, if yes it returns true, else returns false.
Now if i place this function in the begining of any function within same controller, it will check if the user is not logged, it will redirect to login_form
otherwise continue. This works fine.
For example,
public function show_home()
{
$this -> logged_user_only();
$this->load->view('show_home_view');
}
Now I would like to call this logged_user_only()
function in a function of another controller to check if the user is logged in or not?
PS. If this can not be done, or is not recommended, where should i place this function to access in multiple controllers? Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
为什么不扩展控制器,以便登录方法位于我的控制器内(在应用程序的核心文件夹内),并且所有其他控制器都扩展它。例如,您可以:
然后您的主控制器可以按如下方式扩展它:
有关更多信息,请访问:
创建核心系统类新链接在这里:
https://www.codeigniter.com/user_guide/general/ core_classes.html?highlight=core%20classes
Why not extend the controllers so the login method is within a MY controller (within the core folder of your application) and all your other controllers extend this. For example you could have:
and your main controllers could then extend this as follows:
For further information visit:
Creating Core System ClassesNew link is here:
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/Calling a controller from another is not possible with CI and not recommended.
Either move your
logged_user_only
into a helper or even better a core controller that you extend all of your controllers from (MY_Controller
) see http://codeigniter.com/wiki/MY_Controller_-_how_to_extend_the_CI_Controller/只需从控制器中将用户控制器加载为库
现在,在控制器中的任何位置调用用户控制器的此函数,
just load user controller as library from your controller
Now, call this function of user controller any where in your controller,
控制器中的功能登录
控制器中的用户登录功能构建
Function login in Controller Login
Function Construct in Controller user