【问题标题】:Keep query string in Laravel在 Laravel 中保留查询字符串
【发布时间】:2014-11-12 14:59:12
【问题描述】:

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

“隐藏”链接的 url 是 mysite.com/entities?hidden=1,“显示”是 mysite.com/entities?hidden=0。所以我通过隐藏参数来过滤实体。

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

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

withInput 不适合,因为它用于 Redirect,而不是 View 类。

可能的解决方案之一是添加隐藏输入以保持价值

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

类似的东西。但是还有其他解决方案吗?如果我有很多查询参数并且我想保留它们怎么办。

【问题讨论】:

  • 使用表单方法获取

标签: php laravel laravel-4


【解决方案1】:

我假设您的表单是以POST 发送的,所以为了发布到您现在拥有的确切网址,您需要这个:

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

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

domain.com/entities?hidden=0

编辑

如果您想依赖action 而不是当前的 url,请改为:

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

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

【讨论】:

  • 其实我的表格是GET,不过没关系。好吧, Request::fullUrl() 似乎工作正常,唯一让我困惑的是我像 {{ Form::open(['action' => 'PageController@showAdminMaterials', ... 所以我使用它'action' 而不是 url,我确信我会将请求发送到我需要的操作:)
  • 这里的 $hiddenValue 是什么?输入::get('hidden')?
  • 是的,可能是这样,或者任何取决于你的逻辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-04
相关资源
最近更新 更多