web-dev-qa-db-ja.com

Laravel 4-検索に使用する非表示入力の現在のルート名を取得します

Laravel 4 app。たとえば、ユーザーがブログページにいる場合はブログの投稿のみを返し、ユーザーページにある場合はユーザーのリストのみを表示します。

何か不足している場合を除いて(確かに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(){
});

その時点で、ルート名は常に「検索」と見なされます。

13
user2444007

これを試して:

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

それはすでにPHPブロックの中にあるからです。

名前付きルートを探している場合は、次を使用します。

Route::currentRouteName()

あなたが与えた例ではsearchを返します。

関連ドキュメント http://laravel.com/docs/routing#named-routes

19
Mike Grace