gpt4 book ai didi

CodeIgniter 2.1 的 show_404() 和 404_override 问题

转载 作者:IT王子 更新时间:2023-10-29 00:07:46 25 4
gpt4 key购买 nike

我使用 CodeIgniter 已经有一段时间了,目前我正在为一个想要自定义 404 页面的客户做一个项目。一切正常,404_override 运行良好。

当访问者试图访问一篇不存在的文章时,我的问题就来了 我想调用 show_404() 函数,但这显示了 “开箱即用” 404 页面而不是写在 404_override 中的页面。

我已经看到一些旧版本的修复,但我无法让它在 2.1 中工作。因此,如果有人可以帮助我解决这个问题,我将不胜感激。

最佳答案

重定向是最干净的;加载 View 也可以。

这里的问题是 show_404() 通常在您的 Controller 已经加载之后调用(毕竟必须告诉它显示 404)。 CI 不喜欢此时加载第二个 Controller ,这是主要障碍。

您最好的选择可能是扩展 Exceptions 类中的 show_404() 函数以重定向到您的 404 路由。如果没有重定向,您将无法在调用 404 之前显示 View 或您知 Prop 有所需的所有“额外数据”的东西(或者我猜您也可以在 Exceptions 类中加载它)。在某些动态 View 中,它会变得非常复杂。

您显然想要比仅仅编辑错误文件夹中的 404 模板更高级的东西。我在尝试从该文件访问 get_instance() 时遇到问题,因为有时它是在构造 Controller 之前加载的。因此,如果您尝试这样做,请小心;)

更新:这是一个扩展 show_404() 函数以加载 View 的工作示例

<?php
// application/core/MY_Exceptions.php
class MY_Exceptions extends CI_Exceptions {

public function show_404()
{
$CI =& get_instance();
$CI->load->view('my_notfound_view');
echo $CI->output->get_output();
exit;
}
}

关于CodeIgniter 2.1 的 show_404() 和 404_override 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8422033/

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