我在我的 CI 应用程序“专门的 pre_controller 钩子”中使用钩子。
但问题是每次向任何其他控制器发出请求时都会激活钩子,即使是我不希望在其中激活钩子的控制器。可以只为一个控制器启用钩子吗?就像 playframework 中的 @Before 注释一样。
提前致谢。
问问题
2088 次
2 回答
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
于 2012-11-24T08:33:16.063 回答
0
您还可以将代码放入库中,以便在需要时使用。我最终使用了我的解决方案,因为我可以将身份验证逻辑与模块分开。它也使更新变得更容易。
于 2013-06-24T02:11:31.960 回答