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

13
我在我的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(){
});

在这一点上,它总是认为路由名为“search”。

2个回答

33

试试这个:

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

因为它已经在PHP代码块中了。


是的,那基本上完美地运行了。谢谢!它返回一个 / ,所以我的值是 "/blog",但这没关系,因为我可以用 if 语句来检查它!谢谢! - user2444007

19

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接