如何在发生错误时将用户重定向到具有会话消息的另一页面

时间:2018-04-27 08:27:19

标签: laravel laravel-5

我想在有关thujohn / twitter软件包的任何错误时将用户重定向到管理页面。它会抛出Runtimeexception ..

所以我添加了几个代码handler.php

public function render($request, Exception $exception)
{

    if ($exception instanceof \RuntimeException) {
        return redirect()->route('admin.panel')
            ->with('message', 'Please try again later..')
            ->with('message_type','warning');

    } else {
        return parent::render($request, $exception);
    }
}

但是,当我这么说时,它会在所有异常情况下重定向用户,即使是在404错误或尝试获取非对象错误的属性。我该如何解决这个问题?我想重定向用户只是相关的错误

或者有没有办法用以下条件重定向用户。

if($exception->code == 436){
  // it says member has protected access. I can't use it code property outside of the exception class
      return redirect()->route('admin.panel')
            ->with('message', 'Specific error message')
            ->with('message_type','warning');

 }

1 个答案:

答案 0 :(得分:1)

首先转到Exceptions/Handler.php

在这里你可以开发你的记忆。

这是我在QueryException上的示例(您需要通过dd()找到您的例外及其代码):

use Illuminate\Database\QueryException; // REMEMBER TO USE PROPER INSTANCE


        public function render($request, Exception $exception)
                {
                  //dd($exception); <-- here you can catch and check type od exception
                    switch(true) {

                        case $exception instanceof QueryException:

                            if($exception->getCode() == '23000') {
                                return redirect(
                                    route('get.dashboard.index')
                                )->with('warning', 'No record in database);
                            }
                            break; 
                   }
         }