gpt4 book ai didi

php - 强制 CodeIgniter 执行钩子(Hook)功能?

转载 作者:行者123 更新时间:2023-12-03 09:00:58 25 4
gpt4 key购买 nike

嗨,我在 Codeigniter 中遇到了钩子(Hook)问题。我已经为 编写了钩子(Hook)。 'post_controller' 它调用 Controller 函数并加载模板(布局 View 模板)。它适用于所有正常情况。但现在我需要制作一个自定义错误页面。所以我要覆盖 show_404() 函数。在这个函数中我使用 get_instance();获取 CI 对象的函数。使用 CI 对象我正在调用一个函数来设置布局参数。现在我面临的问题是,当我尝试在我的自定义异常类的 show_404() 函数中加载 View 时, View 是未加载为 post_controller 钩子(Hook)没有被执行。我尝试了很多东西但失败了。
谁能给我建议任何方法来做到这一点。或任何其他方式来呈现自定义 404 页面。

function show_404($page = ''){ // error page logic

header("HTTP/1.1 404 Not Found");
$heading = "404 Page Not Found";
$message = "The page you requested was not found ";
$CI =& get_instance();
$metadata[AppContants::META_TITLE] = '404 Page Not Found | Door and Window';
$metadata[AppContants::META_KEYWORDS] = '';
$metadata[AppContants::META_DESCRIPTION] = '';
$CI->setMeta($metadata);
$params['LAYOUT_MAINVIEW']='404_page';
$CI->renderView($params);// this is the function in my controller which sets the parameter for my template.Or it would also be very helpful if i can load the view directly as show below.
$CI->load->view('404_page'); // Loading view directly.

}

最佳答案

看看this link .本质上,您可能希望为错误创建一个 Controller ,然后子类 CI_Router将所有错误请求路由到该 Controller ,您可以在其中添加 Hook 或加载您选择的 Controller 并间接执行 Hook 。

编辑:问题很可能是您发送的响应 header (404) - 许多浏览器会将服务器返回的任何内容替换为它们自己的 404 页面。尝试删除 header()打电话看看会发生什么。 $CI->load->view()应该按预期工作。此外,如果 renderView()不是全局函数,您可能需要使用对包含该方法的特定 Controller 的引用。

关于php - 强制 CodeIgniter 执行钩子(Hook)功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4030478/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com