在Laravel中保留查询字符串

时间:2014-09-18 10:07:13

标签: php laravel laravel-4

我有一个页面上显示的实体列表。除此之外,我还有一个实体过滤表格和一些快速链接,如“隐藏”和“显示”实体。

“隐藏”链接的网址为mysite.com/entities?hidden=1,“显示”为mysite.com/entities?hidden=0。所以我传递隐藏的参数来过滤实体。

另一方面,我有一个单独的表单放在页面的某个位置(我不想将隐藏/显示的链接转换为复选框并将它们插入表单中),用于以其他方式过滤实体,如选择实体类别,或按实体名称搜索。

我想实现下一个逻辑:我点击隐藏的链接并获得所有隐藏实体的列表(mysite.com/entities?hidden=1)。然后我使用我的表单并过滤实体,但“隐藏”的参数消失了。在表单操作中,我返回View::make

withInput不合适,因为它在重定向中使用,而不是在View类中使用。

可能的解决方案是添加保留值

的隐藏输入
@if (Input::has('hidden'))
    <input type="hidden" name="hidden" value="{{ Input::get('hidden') }}" />
@endif

这样的事情。但还有其他解决方案吗?如果我有很多查询参数并且我想保留它们怎么办。

1 个答案:

答案 0 :(得分:3)

我认为您的表单是以POST发送的,因此要发布到您现在拥有的确切网址,您需要:

{{ Form::open(['url' => Request::fullUrl(), ...]) }}

这会将您的查询字符串保留在网址中,因此您将POST到例如。

domain.com/entities?hidden=0

修改

如果您想依赖action而不是当前网址,请改为执行此操作:

{{ Form::open([
    'url' => action('PageController@showAdminMaterials', ['hidden' => $hiddenValue]),
     ...
]) }}

请注意,如果引用的操作接受任何参数,则需要先指定它们,然后添加将成为查询字符串参数的hidden