嗨我在Codeigniter中遇到钩子问题。我已经为'post_controller'写了挂钩,它调用Controller函数并加载模板(布局视图模板)。它对所有正常情况都适用。但现在我需要做一个自定义的错误页面。所以我重写show_404()函数。在这个函数中,我使用get_instance();函数获取CI对象。使用CI对象我调用一个函数来设置布局参数。现在我遇到的问题是,当我尝试在我的自定义异常类的show_404()函数中加载视图时,视图是没有得到加载作为post_controller挂钩没有得到执行。我尝试了很多东西,但失败了。 任何人都可以请建议我任何方式来做到这一点。或任何其他方式来呈现自定义404页面。强制CodeIgniter执行钩子功能?
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.
}
谢谢mway的链接。我也经历过这之前也。我想这是在控制器处于路由级别时执行,即在索引文件执行后。我的问题是,我需要调用show_404()函数在许多基于数据操作的条件下,即如果数据被返回或不是。因此,我已经去覆盖show_404()。如果我在我的视图加载后使用$ CI-> output-> get_output()函数show_404()函数将视图内容打印在数组()中,问题是我无法呈现视图内容。 – sagar27 2010-10-27 06:41:33
你能发表一些代码吗? '$ this-> load-> view(...)'不应该给你一个问题... – mway 2010-10-27 06:48:57
我已经更新我的问题它将如何有用。请让我知道你是否需要一些更多的细节代码。 – sagar27 2010-10-27 07:23:54