YII如何自定义404错误页面处理与其他错误页面沿(YII how to handle custom

2019-07-30 18:59发布

我希望为我做了error404.php文件在我的保护/视图/系统文件夹中显示404错误页面。

默认情况下,我有Sitecontroller和它下面包含错误动作功能

public function actionError()
{
    if($error=Yii::app()->errorHandler->error)
    {

        if(Yii::app()->request->isAjaxRequest)
            echo $error['message'];
        else
            $this->render('error', $error);
    }
}

内部主要配置文件它被定义为

    'errorHandler'=>array(
        // use 'site/error' action to display errors
        'errorAction'=>'site/error',
    ),

我的问题是,我需要定制404页而已,我需要处理它正被sitecontroller的误差函数处理方式错误的其余部分。 但我无法找到一个方法来做到这一点。 如果假设我删除“errorAction” =>“位点/错误”,从配置主然后它只表示404错误通过调用

        throw new CHttpException(404, 'Page not found');

但这样做,我只能看到页面布局没有其他也自定义错误404被视为相同的,而事实并非如此。 我阅读手册很多次,但我仍然无法能解决这个问题。

Answer 1:

使用actionError此代码:

$app = Yii::app();
if( $error = $app->errorHandler->error->code )
{
    if( $app->request->isAjaxRequest )
        echo $error['message'];
    else
        $this->render( 'error' . ( $this->getViewFile( 'error' . $error ) ? $error : '' ), $error );
}

在视图/网站创建error404.php 404错误和error.php为休息。

或者你也可以在配置错误定义PARAM你喜欢不同的处理,并检查错误代码攻击:

$app = Yii::app();
if( $error = $app->errorHandler->error->code )
{
    if( Yii::app()->request->isAjaxRequest )
        echo $error['message'];
    else    
        $this->render( 'error' . ( in_array( $error, $app->params[ 'customErrorPages' ] ) ? $error : '' ), $error );
}

错误处理程序是这样的:当httpexception出现,组件将检查是否存在errorAction财产的任何值,如果存在的话,将运行该控制器的动作。 如果没有设定值到errorAction属性,将显示来自系统文件夹误差图。 因此,有没有需要混合系统视图文件夹和控制器的视图文件夹中的错误观点。



Answer 2:

每当发生错误,在siteController动作错误被调用。 您可以自定义错误路线的行动,你可以这样做:

if(404==Yii::app()->errorHandler->error->code){
     //go to custome error page
else
   //code default error.php


Answer 3:

你能不能跟的.htaccess做到这一点? 我个人创建的所有保存的错误信息和修改的.htaccess调用这些页,而整个误差来的HTML PHP文件的“错误”的文件夹。

友情链接

http://www.javascriptkit.com/howto/htaccess2.shtml

http://www.addedbytes.com/for-beginners/error-documents-for-beginners/

例子

创建你想要的错误页被调用,并在文本文件,写入下面一行的目录.htaccess文件:

ErrorDocument 404     /404.html

假设有一个页面调用404.html在同一目录,当genrated 404页没有发现错误,404.html页面被称为。

同样的作品与其他错误代码:

ErrorDocument 500     /500error.html

假设创建一个500错误和500error.html文件在同一目录中。



Answer 4:

在框架(我与1.14的工作)的最新版本使用:

Yii::app()->errorHandler->error['code']

因为错误是一个数组。



文章来源: YII how to handle custom 404 error page along with other error pages