drghhp8706 2015-07-06 05:11
浏览 253

如何在Yii 2.0中显示自定义错误页面而不是外键错误

Am getting Integrity constraint violation – yii\db\IntegrityException Error when am delete a row without deleting a row in foreign key table.

How i can show custom Error Page instead of Integrity constraint violation – yii\db\IntegrityException Error in Yii 2

How i can catch and throw exception for this in Yii 2.0

Image

  • 写回答

1条回答 默认 最新

  • dongyong6428 2015-07-06 05:27
    关注

    This will not actually the answer you have asked but I have customized error handler in Yii1, and hope it have same behavior in Yii2. You can change it on config/main.php as:

     'errorHandler' => [
                'errorAction' => 'site/error' // To error/errorHandler
      ],
    

    And the Controller Class error have the following lines. You can change it on your need.

    class ErrorController extends CController {
    
        public $layout = '//layouts/column1';
        /**
         * This is the action to handle external exceptions.
         */
        public function actionErrorHandler() {
            if ($error = Yii::app()->errorHandler->error) {
                if ('CDbException' != $error['type']) {
                    if (Yii::app()->request->isAjaxRequest)
                        echo $error['message'];
                    else
                        $this->commonError($error);
                }else if ('CDbException' == $error['type']) {
                    if (Yii::app()->request->isAjaxRequest)
                        echo $error['message'] = 'The system is unable to resolve the database error !';
                    else
                        $this->databaseError($error);
                }
            }
        }
    
        /**
         * 
         * @param type array $error
         * @access : Internal, type private
         * @throws: Http exception.
         */
        private function commonError($error) {
            $this->render('code_error', $error);
        }
    
        /**
         * 
         * @param type array $error
         * @throws Exception
         */
        private function databaseError($error) {
            if (empty($error)) {
                $error['code'] = '404';
                $error['message'] = 'Unknown error !';
                $this->render('code_error', $error);
                Yii::app()->end(0, true);
            }
    
            $error['message'] = 'The system is unable to resolve the database error !';
            $this->render('database_error', $error);
        }
    
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)