我正在开发电子商务网站并在PHP中使用CodeIgniter框架。我有两个面板:1)正面和2)管理员。
在页面加载或URL重定向期间,如果出现“内部服务器错误”。发生这种情况,我想为admin显示我的自定义设计页面500_error_admin.php,为前端UI显示500_error_front.php。
让我清楚500_error_admin.php和500_error_front.php两个网页都有不同的设计。
我尝试使用此代码,但我无法取得成功
的.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
</IfModule>
<IfModule !mod_rewrite.c>
#Directly give the path of page
ErrorDocument 500 http://localhost/myproject/errors/500_admin.php
#Also try with create controller and call method
#ErrorDocument 500 http://localhost/myproject/admin/Error/show_500
</IfModule>
控制器方法
class Error extends CI_Controller {
function __construct() {
parent::__construct();
}
function error_500() {
$this->load->view('errors/500_admin');
}
}
这在我要找的codeigniter中是否可行?
请建议我,我怎样才能以其他方式做到这一点?
答案 0 :(得分:0)
myproject/application/config/database.php
SET $db['default']['db_debug'] to FALSE instead of TRUE .
$db['default']['db_debug'] = FALSE;
答案 1 :(得分:0)
您可以通过owerride核心摘录控制器为管理员和客户端进行归档,按照给定的步骤进行归档:
步骤:1 添加子类前缀:$ config [&#39; subclass_prefix&#39;] =&#39; MY _&#39 ;;在您的配置文件(system / application / config / config.php)
中步骤:2 在您的目录(系统/应用程序/库)中创建MY_Exceptions.php文件并添加以下代码
class MY_Exceptions extends CI_Exceptions{
function MY_Exceptions(){
parent::CI_Exceptions();
}
function show_404($page=''){
$this->config =& get_config();
$base_url = $this->config['base_url'];
$_SESSION['error_message'] = 'Error message';
header("location: ".$base_url.'error.html');
exit;
}
}
多数民众赞成!不是您的错误页面将重定向到error.html页面。希望这会对你有所帮助!
问候!
答案 2 :(得分:0)
您可以设置自定义页面以显示错误。 codeigniter 3已经有默认错误页面。如果要更改错误页面,请在application / config / config.php
中打开config.php在config.php内部找到错误视图目录路径
$config['error_views_path'] = APPPATH.'/views/errors/'; //path to you error view directory
然后更改为您的目录错误视图。内部视图有2个目录。[cli,html] 通过cmd或终端访问您的网站时cli视图处理的位置。 通过浏览器访问您的网站时的html视图句柄。
在这种情况下,您需要更改html的设计。
在html内部有5个由ci定义的错误页面。
-application/views/html/error_404.php // while page doesn't exist
-application/views/html/error_db.php // while error on db such as configuration and etc
-application/views/html/error_exception.php // error exception
-application/views/html/error_general.php // error general
-application/views/html/error_php.php
您可以将500_admin.php重命名为500_admin.php更改为error_general.php。对于变量消息,您需要打开默认的error_general.php并粘贴到新视图中 记得把它们放在application / views / errors / html里面。 所以你的错误页面结构文件夹将如下所示
application/views/errors/html/error_general.php
有关详细说明,您可以查看文档here
答案 3 :(得分:0)
这是一个老问题,但这是我的解决方案:
在应用程序/核心
<?php
class MY_Exceptions extends CI_Exceptions
{
public function show_error($heading, $message, $template = 'error_general', $status_code = 500)
{
$message = '<p>'.(is_array($message) ? implode('</p><p>', $message) : $message).'</p>';
$_SESSION['500_error_heading'] = $heading;
$_SESSION['500_error_message'] = $message;
redirect('error/server');
}
}
在 config/routes.php
$route['error/server'] = 'errorController/error_server';
在错误控制器中
public function error_server()
{
$session = new SessionHelper();
$data['heading'] = $session->get('500_error_heading');
$data['message'] = $session->get('500_error_message');
$session->unset('500_error_heading');
$session->unset('500_error_message');
$this->CI->load->view_template('errors/html/error_general', $data);
}