我在我的CI应用程序中使用了钩子" pre_controller钩子专门"。
但问题是每次向任何其他控制器发出请求时都会激活挂钩,即使是我不希望激活挂钩的控制器。
是否只能为一个控制器启用挂钩?就像playframework中的@Before注释一样
提前谢谢。
答案 0 :(得分:8)
为什么不将该逻辑放在控制器的构造函数中?
如果您有多个控制器希望共享此功能,只需使用CI_Controller
中的新类扩展application/core/MY_Controller.php
并将功能放在那里,然后在控制器中让它们扩展该类默认CI_Controller(您可以在MY_Controller.php
中添加多个类)!
您在MY_Controller.php
中的覆盖类中放置的任何内容都将在控制器其余部分的代码之前执行,模拟pre_controller
挂钩。
请记住也要调用父构造函数:
function __construct(){
parent::__construct();
}
有关扩展核心的更多信息,请参阅手册:https://www.codeigniter.com/user_guide/general/core_classes.html
答案 1 :(得分:0)
您还可以将代码放入库中,以便在需要时使用。我最终使用了我的解决方案,因为我可以将我的身份验证逻辑与我的模块分开。它也使更新更容易。