13

Laravel 4 アプリのナビゲーション バーに検索フォームがあります。誰かが検索に入力して送信するとき、サイトのどのセクションにいるかに基づいてのみクエリを実行したいと考えています。たとえば、ブログ ページにある場合はブログ投稿のみを返し、ユーザー ページにある場合はユーザーのリストのみを表示するようにします。

私が何かを見逃していない限り (おそらく私は Laravel を初めて使用するので!) getCurrentRoute()->getPath() を使用してこれを行うことができます。しかし、コントローラーでこれを実行しようとすると、古いルートがもうないため、フォームからこれを実行する必要があります。そこで、次のようにフォームに非表示フィールドを作成しました。

{{ Form::hidden('route', '{{{Route::getCurrentRoute()->getPath()}}}') }};

ただし、「getCurrentRoute()->getPath()」は正しく評価されません。フォームフィールドは文字通りそれを出力します:

<input name="route" type="hidden" value="&lt;?php echo e(Route::getCurrentRoute()-&gt;getPath()); ?&gt;">

これを機能させる方法を知っている人はいますか、それとも私が完全に見逃しているより良い方法はありますか? 繰り返しますが、これを通常のようにコントローラーに挿入することはできません。その時点でルートが送信されているためです。

// Search
Route::post('search', array('as' => 'search', 'uses' => 'SearchController@postSearch'), function(){
});

その時点で、ルート名は常に「検索」であると考えられます。

4

2 に答える 2