2017-10-07 11 views
1

laravelエラー、警告メッセージを何とかキャッチしたいと思います。私はconfig/app.phpファイルからそれらを無効にしたくありません。私はモノログを使用していくつかの情報を記録しています。Laravelメッセージが表示されないようにして、Laravel 5でカスタムページの問題にリダイレクトします。

public function view($id){ 
    try { 
    $tag = Tags::find(12313); // tags is a model 
    }catch(Exception $error){ 
     echo 'error'; exit(); 
     $this->log->logMessage(Logger::ERROR, $error->getMessage()); 
     return redirect()->route('admin.tags')->with(['msg' => 'Smth went wrong']); 
    } 
} 

$this->logは私が情報をログに記録するmonolog classを使用していたクラスです: これは、コードの私の作品です。

現実には、キャッチ部分には行かないということです。私はerrorメッセージを受け取りません。私はlaravelからこのメッセージが出ています:

Trying to get property of non-object (View: ...... 

私は意図的にそれが動作するかしないかどうかを確認するためにそこに数12313を置きます。そして、何らかの理由で動作していないため、私はリダイレクトされません。アイデアは、何かが起こった場合、私は一般的なエラーメッセージで特定のページにユーザーをリダイレクトしたい。それをどうすれば実現できますか?あなたは。あなたは、アプリケーションの\例外でerorsを扱うことができるlaravelでそれを行うことができます

+0

をスローされます、これはあなたが私ドンを見ることができるように、それは、私のログクラスの内容を重要ではありません – iCoders

+0

@iCoders独自のクラスである場合には、ログクラスを表示することができます – Chester

+0

私は特定のケースを探していません、私はすべてのlaravelエラーメッセージをキャッチし、特定のページにリダイレクトする一般的なケースを持っていたいと思います。これは多くのケースの単なる例です:) – Chester

答えて

0

はレコードが見つからない場合は例外をスローしません

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

     if($exception instanceof NotFoundHttpException) 
     { 
      return response()->view('errors.404', [], 404); 
     } 
      if ($exception instanceof MethodNotAllowedHttpException) 
     { 
       return response()->view('errors.405', [], 405); 

     } 
     if($exception instanceof MethodNotAllowedHttpException) 
     { 

      return response()->view('errors.404', [], 405); 
     } 

     return parent::render($request, $exception); 
    } 
+0

と私はこの機能を追加する必要がありますか? – Chester

+0

あなたのラーベルのApp \ Exceptions \フォルダをチェックインした場合Handlerクラスファイル – iCoders

+0

app - >例外 - > handler.php – iCoders

0

find() Handlerクラスを\します。したがって、代わりにこれを行う:

public function view($id) 
{ 
    $tag = Tags::find(12313); // tags is a model 

    if (is_null($tag)) { 
     $this->log->logMessage(Logger::ERROR, $error->getMessage()); 
     return redirect()->route('admin.tags')->with(['msg' => 'Smth went wrong']); 
    } 
} 

findOrFail()を使用するか、指定されたレコードが見つからない場合は例外をスローします。

モデルが見つからない場合は例外をスローすることがあります。これは、ルートやコントローラで特に便利です。 findOrFailメソッドとfirstOrFailメソッドは、クエリの最初の結果を取得します。何も結果が見つからなかった場合は、Illuminate\Database\Eloquent\ModelNotFoundException

関連する問題