Codeigniter - 每个控制器的挂钩

时间:2012-11-24 06:30:29

标签: codeigniter

我在我的CI应用程序中使用了钩子" pre_controller钩子专门"。
但问题是每次向任何其他控制器发出请求时都会激活挂钩,即使是我不希望激活挂钩的控制器。 是否只能为一个控制器启用挂钩?就像playframework中的@Before注释一样 提前谢谢。

2 个答案:

答案 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)

您还可以将代码放入库中,以便在需要时使用。我最终使用了我的解决方案,因为我可以将我的身份验证逻辑与我的模块分开。它也使更新更容易。