【问题标题】:Laravel - Retain Value from Form PostLaravel - 从表单发布中保留价值
【发布时间】:2014-03-07 18:41:00
【问题描述】:

我目前有一个用于过滤视图中数据的下拉框。在表单发布后,我想保留帖子中选择的“publication_id”,以便在需要时用于额外过滤。

这是我当前的代码

<select name="publication_id" id="publication_id" class="form-control input-sm" >
@foreach($publications as $publication)
<option value="{{ $publication->id }}" <?php if(isset($_GET['publication_id']) == '{{ $publication->id }}') echo 'selected'; ?>>{{ $publication->name }}</option>
@endforeach
</select>

问题在于 post 之后的选定值始终默认为上面 foreach 循环中的最后一个选项。我怎样才能让它正常工作?

【问题讨论】:

    标签: php html laravel


    【解决方案1】:

    您可以尝试生成select,并且您的旧选择项将保留 (Input::old())

    {{ Form::select('publication_id', $publications, Input::old('publication_id')) }}
    

    查看Laravel Documentation了解更多详情。

    【讨论】:

    • 我在这里尝试过你的方法,但现在在发布后它默认为第一个值。这是我在控制器中的代码。 $publications = Publication::lists('name', 'id');
    • 当您在验证失败时将其重定向回时,将设置先前选择的值,并且在第一次时它将是第一个值。还要确保,值被映射为'id' =&gt; 'value'
    【解决方案2】:

    if 语句中的isset() 将返回真或假,而不是$_GET['publication_id']。这是与$publication->id 而不是实际上$_GET['publication_id'] 相比的。您可以简单地使用:

    <?php if($_GET['publication_id'] == '{{ $publication->id }}') echo ' selected="selected" '; ?>
    

    在您的代码中,如果 isset() 返回 true,这将匹配每个 $publication->id !=0,因此您的所有选项都可能具有选定的属性集。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 2014-05-13
      • 2014-11-29
      • 2020-10-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多