Laravel 4 - 在隐藏输入上获取当前路由名称以用于搜索

时间:2013-06-01 20:49:45

标签: laravel laravel-4 url-routing

我在Laravel 4应用程序的导航栏中有一个搜索表单。当有人输入搜索并提交时,我希望只根据他们所在站点的哪个部分执行查询。例如,如果它们在博客页面上,我希望它只返回博客帖子,如果它们在用户页面上,我希望它只显示一个用户列表。

除非我遗漏了某些东西(当然可能是因为我是Laravel的新手!)我可以使用getCurrentRoute() - > getPath()来做到这一点。但我必须从表单中执行此操作,因为当我尝试在Controller中执行此操作时,它不再具有旧路由。所以,我在表单上创建了一个隐藏字段,如下所示:

{{ 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(){
});

此时它始终认为路线名称为“搜索”。

2 个答案:

答案 0 :(得分:32)

试试这个:

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

因为它已经在PHP块中了..

答案 1 :(得分:19)

如果您正在寻找指定路线,请使用:

Route::currentRouteName()

将为您提供的示例返回search

相关文档http://laravel.com/docs/routing#named-routes