2017-06-12 8 views
2

コントローラレンダリングがあります。my_view.blade.phpビューは、特定の変数にアクセスする場合があります:Laravel:404ページが表示されているときに元のビューデータにアクセスします。

return view()->make('my_view', array('var1' => 'foo', 'var2' => 'bar')); 

、のは404エラーをスローmy_view.blade.phpを使用してページをしましょう。この場合、Laravelはmy_viewのカスタム404.blade.phpを「スワップ」します。

これが発生すると、ビューには、もともと渡されたデータがないことは明らかです。

私はmy_viewに渡された元のデータを永続化することができます方法はありますので、彼らは404.blade.php内でアクセスすることができますか?このデータは、各ビューごとに異なる動的であることに注意してください。もちろん

、解決策は、あなたが、これは、その要求内のすべてのビューの中でそれを共有しますview()->share($key, $val)を使用することができます404

+1

に関する見解とのデータ共有にドキュメントを表示することができます。その場合、元のビューデータは適用されません。これは私が考えていない一般的な解決策はありません。 – apokryfos

+0

もちろん、あなたは正しいです。私は 'abort(404)'を実行するので、データはビューにまったく渡されません。また、現在、メソッドにデータを渡す方法はありません。 – lesssugar

+0

手作業で 'abort'を起動した場合、@ianの示唆するように(ミドルウェアでこれを起動しない限り)' view() - > share(...) 'を実行することができます。 404が存在しないときに自動発火するルートにバインドされたモデルを持つ。それであなたはかなり運が悪いです。 – apokryfos

答えて

0

を投げて任意のページを処理します。

あなたは404エラーを取得する場合は、元のビューがレンダリングされていないLaravelドキュメント

+0

あらかじめ定義されたキーペアセットがある場合は、共有する必要があることを知っていれば問題ありません。私の場合は、元のビューのデータを(動的にレンダリングされた)404ビューと共有したいと思います。私はこのために 'share'を使う方法を見ません。 – lesssugar

+0

@lesssugar共有メソッドにkeyval配列を渡すことができます。ビューを知るにはどうすればいいか分かっていなければなりません。今はvar1とvar2を渡しているので、それを配列に入れて上記の解決法を使用してください。 – Ian

+0

これは私の投稿の要点です。レンダリングされた404ビューは、元のビューが何をしていたかにかかわらず、同じデータに自動的にアクセスするようにします。これは、私が実際にデータを事前に知らないことを意味します。 – lesssugar

関連する問題