【问题标题】:drop-down show selected value when editing a row laravel编辑行时下拉显示所选值 laravel
【发布时间】:2020-05-14 07:11:54
【问题描述】:
<div class="col-xs-12 col-sm-12 col-md-12">
            <div class="form-group">
                <strong>From Destination:</strong>
                <select name="from_destination_data" class="form-control">
                    @if ($destinationsData != [])
                        @foreach($destinationsData as $info)
                            <option value="{{$destinationsData[$index]}}">{{$info}}</option>
                        @endforeach
                    @endif
                </select>
            </div>
        </div>

我检索了所选$destinationData 的$index,当dd($destinationsData[$index]); 我得到我需要的结果,但是当我把它放在上面显示的值中时它没有出现

【问题讨论】:

  • 旁注:@if ($destinationsData != []) ... @endif 是不必要的,除非您需要在 @else 块中呈现其他内容。 @foreach() 自然会跳过空数组/集合。接下来,值应该是value="{{ $info }}(我想),$index是什么?
  • 感谢您的注意,索引类似于 [0 => 'USA, FLIGHT', 1 => 'Canada, FLIGHT',....],所以 0 和 1 是索引我检索索引= 1,所以我需要在我的表中编辑一行时,首先通过这个索引显示这个数据,然后在这个索引的这个数据之后显示数组中的其他数据。 @蒂姆刘易斯
  • 嗯...仍然不确定您的意思。我更想问$index 来自哪里?当您使用foreach() 循环数据时,通常不需要索引,但您可以使用@foreach($array AS $index =&gt; $value),其中$array[$index] 与$value 相同,但同样,通常不需要。
  • 不幸的是,这种情况更加令人困惑......汽车类型和座椅之间的关系是什么?为什么6个座位是奔驰?选择应该如何工作是你有一个选项列表,你构造了一堆&lt;option value="{{ $option-&gt;id }}"&gt;元素,带有一个值(通常是id,比如4)和一个标签(通常是一个字符串,比如Honda )。然后,将id 保存到数据库中,例如$record-&gt;car_id。当您编辑此$car 时,您基于$record-&gt;car_id == $option-&gt;id 设置&lt;option value="4" selected&gt;Honda&lt;/option&gt; 的selected 属性。清楚吗?
  • 假设您有@foreach($destinationData AS $key =&gt; $info),它将是value="{{ $key }}",然后根据您保存/检索您正在编辑的记录的方式,您将设置&lt;option value="{{ $key }}" {{ $record-&gt;destination_id == $key ? 'selected' : '' }}&gt;{{ $info }}&lt;/option&gt;

标签: html laravel foreach drop-down-menu select-options


【解决方案1】:

在构造&lt;select&gt; 和&lt;options&gt; 时,您需要为每个可以在编辑记录时引用的值设置一个值。请参阅以下内容:

<div class="col-xs-12 col-sm-12 col-md-12">
    <div class="form-group">
        <strong>From Destination:</strong>
        <select name="from_destination_data" class="form-control>
          @foreach($destinationsData as $key => $info)
          <option value="{{ $key }}">{{ $info }}</option>
          @endforeach
        </select>
    </div>
</div>

在这种情况下,设置 value="{{ $key }}" 会将值设置为从 0 开始的索引,可以在编辑时引用:

@foreach($destinationsData as $key => $info)
<option value="{{ $key }}" {{ $record->from_destination_data == $key ? 'selected' : '' }}>{{ $info }}</option>
@endforeach

只要$record-&gt;from_destination_data 等于任何$key 迭代,&lt;option&gt; 就会有selected="selected",将其设置为默认选择选项。

【讨论】:

  • 我建议将值设为:value="{{ $destinationsData [$key] }}",提交后会出现问题,发布或返回的值是关键而不是我想要的数据,但在这种情况下,@ 987654332@ 工作得很好,顺便谢谢你:) @TimLewis
  • 啊,在这种情况下,您可以只使用value="{{ $info }}" 并完全省略$key。还记得我说过,循环时$destinationsData[$key] 的值会和$info 一样吗?这就是数组索引在foreach() 循环中的工作方式:) 很高兴你让它工作了
  • 你好,蒂姆。请你能帮我知道如何添加到这个{{ $record-&gt;from_destination_data == $key ? 'selected' : '' }} 否则,如果我想把它变成:if(){}elseif(){}else{},你能帮忙吗,如果可以的话,我会添加一个问题,你可以回答它:)。 @蒂姆刘易斯
  • 对于此问题中的示例,您不需要if/else if/else...您可以嵌套三元运算符,例如$condition ? ($condition2 ? 'something' : 'nothing') : 'nothing',但建议不要...可能最好问一个新的问题而不是直接ping我。
猜你喜欢
  • 2021-09-12
  • 1970-01-01
  • 2019-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多