以下是来自show_error
/system/core/exceptions.php
方法
public function show_error($heading, $message, $template = 'error_general', $status_code = 500)
{
$templates_path = config_item('error_views_path');
if (empty($templates_path))
{
$templates_path = VIEWPATH.'errors'.DIRECTORY_SEPARATOR;
}
if (is_cli())
{
$message = "\t".(is_array($message) ? implode("\n\t", $message) : $message);
$template = 'cli'.DIRECTORY_SEPARATOR.$template;
}
else
{
set_status_header($status_code);
$message = '<p>'.(is_array($message) ? implode('</p><p>', $message) : $message).'</p>';
$template = 'html'.DIRECTORY_SEPARATOR.$template;
}
if (ob_get_level() > $this->ob_level + 1)
{
ob_end_flush();
}
ob_start();
include($templates_path.$template.'.php');
$buffer = ob_get_contents();
ob_end_clean();
return $buffer;
}
现在我正试图从我的控制器调用此函数,现在如果我这样做,那么我可以传递$heading
,$message
,$template
和{{1} }。
现在我正在尝试创建自己的401 HTTP Unauthorized错误页面,所以我在我的控制器中创建了一个$status_code
内的视图文件,我正在尝试这样做:
/application/views/errors/html/error_401.php
所以我传递了我的标题和消息,这是我创建的show_error('401 Unauthorised', 'You are not authorised to access this page.', 'error_401', 401);
视图文件本身。我还告诉函数我要加载的模板是error_401.php
。
但是,它仍然会在加载error_401
而不是error_general
时继续存在。有这个原因吗?
由于
答案 0 :(得分:0)
一种可能的方法是简单地为您的库重新创建方法。
public function show_error($heading, $message, $template = 'error_general', $code = 404)
{
$template_path = APPPATH.'views/library_name/errors';
if ($this->config->item('error_view_path', 'library_name'))
{
$template_path = $this->config->item('error_view_path', 'library_name');
}
if (is_cli())
{
$message = "\t".(is_array($message) ? implode("\n\t", $message) : $message);
$template = 'cli'.DIRECTORY_SEPARATOR.$template;
}
else
{
set_status_header($code);
$message = '<p>'.(is_array($message) ? implode('</p><p>', $message) : $message).'</p>';
$template = DIRECTORY_SEPARATOR.$template;
}
ob_start();
include($template_path.$template.'.php');
$buffer = ob_get_contents();
ob_end_clean();
echo $buffer;
exit();
}
基本上取自/system/core/Exceptions.php
,但很容易做到。
@Patrick提到的http://jeromejaglale.com/doc/php/codeigniter_404。