0

我现在已经花了几个小时,试图弄清楚为什么我不能让一个简单的钩子在 codeigniter 中工作。

我在配置中启用了钩子。我检查了拼写和大小写。

我在 config/hooks.php 中编写了以下代码:

$hook['pre_controller'] = array(
'class'    => '',
'function' => 'set_previous_page',
'filename' => 'previous_page',
'filepath' => 'hooks'
);

然后是位于 hooks 文件夹中的 previous_page.php 文件:

function set_previous_page()
{
    echo "Hi!"; die;
}

显然目的不是为了呼应嗨!然后停止脚本执行,但这只是为了让它工作。我确实尝试了几个钩点。但是 pre_controller i 应该能够输出 hi 并终止脚本,然后将 hi 作为唯一的输出。

但是当我加载我的页面时,它只是正常加载。

我故意尝试弄乱钩子数组中的语法,它确实给了我一个错误,并且页面的其余部分没有加载。这只是告诉我,至少它确实认识到我已经打开了钩子。

但从这里开始,我迷路了。不知道该怎么办?

你有什么想法?我现在就试着睡一觉,希望这里的一些聪明人有答案!先感谢您!

编辑:顺便说一句,我正在使用 MX(模块化扩展)、phil sturgeons 模板库和 Ion auth。不要真的认为他们应该有影响。

4

2 回答 2

1

您的代码看起来不像手册中的代码。你检查了吗?

http://www.codeigniter.com/user_guide/general/hooks.html

我刚在本地试了一下,效果很好。

应用程序/配置/hooks.php:

$hook['pre_controller'] = array(
   'class' => '',
   'function' => 'Myfunction',
   'filename' => 'Myclass.php',
   'filepath' => 'hooks',
   'params' => ''
);

应用程序/钩子/Myclass.php:

<?php

function Myfunction(){

    echo "wut wut";
    die;
}

完成所有设置后,我访问该页面并获得一个wut wut.

您缺少php文件名中的扩展名,但unexpected end of input如果其他一切正常,则会引发异常。

于 2013-05-02T19:36:51.263 回答
0

这可能很晚才响应,以防有人遇到与我使用 CI 3.x 相同的此类问题。只需确保在 config/config.php 文件中启用钩子,$config['enable_hooks'] = TRUE;然后再将条目放入 config/hooks.php

于 2018-07-21T14:04:30.607 回答