这是我的选择选项
<select name="recomemded_food[]" value="" style="width:560px;" multiple class="chosen-select" >
<option value="American Black Bear">American Black Bear</option>
<option value="Asiatic Black Bear">Asiatic Black Bear</option>
<option value="Brown Bear">Brown Bear</option>
<option value="Giant Panda">Giant Panda</option>
</select>
以下是我的代码试图使用foreach循环来获取数组值。但我收到以下错误:
@foreach (explode(',',old('recomemded_food')) as $recomemded_food)
{{$recomemded_food}}
@endforeach
错误消息:explode()期望参数2为字符串
答案 0 :(得分:21)
在玩了一下之后,我想出了这个,它看起来非常出色
<select name="options[]" id="options" class="form-control" multiple>
@foreach($settings->includes->get('optionList') as $option)
<option value="{{ $option->id }}" {{ (collect(old('options'))->contains($option->id)) ? 'selected':'' }}>{{ $option->name }}</option>
@endforeach
</select>
我在利用collect函数方面可能100%错误,但它在我的许多测试中都能正常工作。我想说谢谢MPS,因为这是你的例子,真的让我尝试这个,因为没有数据在&#34; recommended_food&#34;你会得到一个错误,因为in_array需要一个数组并且不能很好地使用null,所以我想出了这样做的想法。
@if (old("options")){{ (in_array($option->id, old("options")) ? "selected":"") }}@endif
内联,但对我来说看起来很难看的男人这么长的故事,我正在使用以下代替
{{ (collect(old('options'))->contains($option->id)) ? 'selected':'' }}
希望这有助于其他人!!
答案 1 :(得分:9)
如果您从Controller传递选择值:
$recommended_foods = ["American Black Bear",
"Asiatic Black Bear",
"Brown Bear",
"Giant Panda"];
并在视图中:
<select required="required" class="form-control" name="recommended_food">
@foreach ($recommended_foods as $key => $food)
<option value="{{ $food}}" {{ (old("recommended_food") == $food ? "selected":"") }}>{{ $food }}</option>
@endforeach
</select>
答案 2 :(得分:4)
对我来说,Jilson Thomas的回答不适用于多选所以我将其更改为:
{{ in_array($food, old("recommended_food")) ? "selected":"") }}
答案 3 :(得分:3)
有人要求选择多个问题。
假设你有一个叫做指定的字段,你需要选择多个指定来添加1个记录,而字段名称是 forWhom
在添加
期间您需要添加 {{(收集(旧(&#39; forWhom&#39;)) - &gt;包含($ key))? &#39;选择&#39;:&#39;&#39; 代码的和平与您的选项标记
看起来像
<select id="forWhom" name="forWhom[]" multiple class="form-control chosen">
<option value="">--- Select ---</option>
@foreach ($desgInfo as $key => $value)
<option value="{{ $key }}"
{{ (collect(old('forWhom'))->contains($key)) ? 'selected':'' }} />
{{ $value }}
</option>
@endforeach
</select>
编辑期间
您需要添加
{{ (collect(old('forWhom'))->contains($key)) ? 'selected':'' }}
{{ (in_array($key,$info->forWhom)) ? 'selected' : ''}}
看起来像
<select id="forWhom" name="forWhom[]" multiple class="form-control chosen">
<option value="">--- Select ---</option>
@foreach ($desgInfo as $key => $value)
<option value="{{ $key }}"
{{ (collect(old('forWhom'))->contains($key)) ? 'selected':'' }}
{{ (in_array($key,$info->forWhom)) ? 'selected' : ''}}
/>
{{ $value }}
</option>
@endforeach
</select>
Select all selected id's in a multiselect dropdown in laravel 5.4 with harvest chosen
由于
答案 4 :(得分:1)
这就是我的方式,非常有活力。
<select id="gender" name="gender">
<option>Select</option>
<option value="M">Male</option>
<option value="F">Female</option>
</select>
<script>
var currentGender = null;
for(var i=0; i!=document.querySelector("#gender").querySelectorAll("option").length; i++)
{
currentGender = document.querySelector("#gender").querySelectorAll("option")[i];
if(currentGender.getAttribute("value") == "{{ old("gender") }}")
{
currentGender.setAttribute("selected","selected");
}
}
</script>
答案 5 :(得分:1)
最好的方法:
<label for="name">Tags</label>
<select name="tags[]" class="form-control select-tag" multiple>
@foreach($tags as $tag)
<option value="{{$tag->id}}" {{in_array($tag->id, old("tags") ?: []) ? "selected": ""}}>{{$tag->name}}</option>
@endforeach
</select>
答案 6 :(得分:0)
我正在解析JSON
数据,并且面临将多选项重新填充为array
,并且只需要一个表,并且没有使用keys
,因为这array
的{{1}}方法正在传递show
,因此必须直接在模板上提供值,在我的情况下,作为controller
上的crud资源模板(也在edit.blade.php
模板上)。
这对我有用,并且是我在视图中得到的最干净的。
create
答案 7 :(得分:0)
我认为这个问题的最佳答案是
@if(count($categories) > 0)
@foreach($categories as $category)
<option value="{{ $category->id }}" {{ (old('lawyer_fields') == null ? '' : in_array($category->id ,old('lawyer_fields')) ? "selected":"") }}>
{{ $category->name }}
</option>
@endforeach
@else
<option disabled>بدون انتخاب</option>
@endif
答案 8 :(得分:0)
使用collect(old('roles'))->contains($ role)
例如:
<div class="form-group">
<label for="roles" class="form-control-label">Roles</label>
<select name="roles[]" id="roles" data-placeholder="Choose role..." multiple class="standardSelect">
<option value="" label="default"></option>
@foreach($roles as $role)
<option value="{{ $role }}" {!! (collect(old('roles'))->contains($role)) ? 'selected="selected"' : '' !!}>{{ $role }}</option>
@endforeach
</select>
</div>