2016-10-17 10 views
1

ミドルウェアからコードが実行されているかどうかを検出する方法はありますか?私は日付変換のためにどこからでも呼ばれるヘルパーを持っています。そのヘルパーでは、私はルート名\Route::current()->getName()を確認するか、コンソール\App::runningInConsole()から実行しているかどうかを調べます。Laravelのミドルウェアから実行中であることを検出する場合

私のミドルウェアはヘルパーを呼び出すとき\Route::current()null

ているので、私は\Route::current()->getName()でエラーを取得するには、コードが私のミドルウェアから実行された場合を知る方法はありますか? おかげ

問題解決私は、私はあなたの助け

ためprotected $dates = ['trial_ends_at', 'ends_at'];

おかげで問題レジ係とミドルウェアを統合していることは、固定しまった、と日付を設定するには、私のtimezonehelperに行く防ぐために使用していた

+2

なぜそれをしますか?私はおそらく実行モード(コンソールまたはHTTP)を検出するためにヘルパーに引数を渡します。 –

+0

私のヘルパーには、 '\ Route :: current() - > getName()'をチェックする条件がたくさんあり、ミドルウェアがヘルパーに到達すると、現在のルートは\ Route :: current()です。 nullなので、 '\ Route :: current() - > getName()'でエラーが発生します。ミドルウェアから呼び出しているかどうかをチェックするための条件を追加できます – user3489502

+0

これは実際にあなたのコードに最適なデザインがないと言っています。それでもいくつかのシナリオであっても、このヘルパーのパラメータを使用して、使用するモードを特定し、そのパラメータを任意の値を持つことができるintパラメータにすることをお勧めします。 –

答えて

0

以下のコードを使用してlaravelでフルURLを取得できます。 $ fullUrl = Request :: capture() - > fullUrl();

そして、以下のコードを使用してlaravelに現在のURLを取得することができます $ currentUrl = Routes :: current() - > getName();

この場合、次の名前空間を使用する必要があります。 イルミネーション\サポート\ファサード\ルートをルートとして使用します。

関連する問題