Chr*_*her 26 laravel blade laravel-4
我有这个代码:
<select required="required" class="form-control" name="title">
<option></option>
@foreach ($titles as $key => $val)
@if (stristr($key, 'isGroup'))
<optgroup label="{{ $val }}">
@else
<option value="{{ $key }}">{{ $val }}</option>
@endif
@endforeach
</select>
Run Code Online (Sandbox Code Playgroud)
所以当表单有错误时我会使用该行Redirect::route('xpto')->withInput()->withErrors($v).但我不能重新填充选择字段.没有使用JavaScript的任何方法吗?
Tim*_*wis 54
此外,您可以使用?运算符来避免使用@if @else @endif语法.更改:
@if (Input::old('title') == $key)
<option value="{{ $key }}" selected>{{ $val }}</option>
@else
<option value="{{ $key }}">{{ $val }}</option>
@endif
Run Code Online (Sandbox Code Playgroud)
只需:
<option value="{{ $key }}" {{ (Input::old("title") == $key ? "selected":"") }}>{{ $val }}</option>
Run Code Online (Sandbox Code Playgroud)
5le*_*ess 24
除了使用 Input 类之外,您还可以使用 old() 助手来缩短它的时间。
<option {{ old('name') == $key ? "selected" : "" }} value="{{ $value }}">
Run Code Online (Sandbox Code Playgroud)
Akb*_*ali 20
在向您展示的所有方法中,如果您的项目是用高于 Laravel 9 的版本制作的,我不建议使用它们。
使用这个,因为 laravel 本身已经添加了这个
<select name="version">
@foreach ($product->versions as $version)
<option value="{{ $version }}" @selected(old('version') == $version)>
{{ $version }}
</option>
@endforeach
</select>
Run Code Online (Sandbox Code Playgroud)
Chr*_*her 11
解决方案是Input::old()与$key变量进行比较.
@if (Input::old('title') == $key)
<option value="{{ $key }}" selected>{{ $val }}</option>
@else
<option value="{{ $key }}">{{ $val }}</option>
@endif
Run Code Online (Sandbox Code Playgroud)
玩了一下之后,我想出了这个,它看起来非常出色
<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>
Run Code Online (Sandbox Code Playgroud)
在利用collect函数时我可能100%错误,但它在我的许多测试中都能正常工作.在网站上看到一些其他帖子后,我看到有人建议利用in_array($ needle,$ array)函数,但在注意到如果我的旧('options')为null之后会出错,因为它需要in_array要求,打赌你猜到一个阵列.因此,在找到解决方案之后,虽然我使用了收集方法,但我们正在使用larval,因为我们正在使用larval.好吧无论如何丑陋的解决方案如下
@if (old("options")){{ (in_array($option->id, old("options")) ? "selected":"") }}@endif
Run Code Online (Sandbox Code Playgroud)
内联,但看起来很丑的男人这么长的故事,我正在使用以下代替
{{ (collect(old('options'))->contains($option->id)) ? 'selected':'' }}
Run Code Online (Sandbox Code Playgroud)
希望这有助于其他人!!
这似乎不适用于非多重选择字段,但是可以使用一个可以为此工作的字段.
<select name="gender" class="form-control" id="gender">
<option value="">Select Gender</option>
<option value="M" @if (old('gender') == "M") {{ 'selected' }} @endif>Male</option>
<option value="F" @if (old('gender') == "F") {{ 'selected' }} @endif>Female</option>
</select>
Run Code Online (Sandbox Code Playgroud)
小智 5
我更改了代码以使其包含''在标题值上,因为如果没有引号,它将无法正常工作
<select class="form-control" name="team" id="team">
<option value="">---------Choose Team---------</option>
@foreach($teams as $team)
<option value="{{$team->id}}" {{(old('team')==$team->id)? 'selected':''}}>{{$team->name}}</option>
@endforeach
</select>
eg.<select name="title">
<option value="1" {{ old('title') == '1' ? 'selected' : '' }}>
Item 1
</option>
<option value="2" {{ old('title') == '2' ? 'selected' : '' }}>
Item 2
</option>
</select>
Run Code Online (Sandbox Code Playgroud)
Laravel 6 或更高版本:只需使用 old() 函数,例如@if (old('cat')==$cat->id),它将为您完成其余的工作。
它是如何工作的: select 标签将选定的选项值存储到它的 name 属性中,如果您选择任何选项,它将存储到cat 中。第一次加载页面时,cat 中没有任何内容,当用户选择一个选项时,该选项的值会存储到 cat 中,因此当用户被重定向时,old()函数会从 cat 中提取先前的值。
{!!Form::open(['action'=>'CategoryController@storecat', 'method'=>'POST']) !!}
<div class="form-group">
<select name="cat" id="cat" class="form-control input-lg">
<option value="">Select App</option>
@foreach ($cats as $cat)
@if (old('cat')==$cat->id)
<option value={{$cat->id}} selected>{{ $cat->title }}</option>
@else
<option value={{$cat->id}} >{{ $cat->title }}</option>
@endif
@endforeach
</select>
</div>
<div class="from-group">
{{Form::label('name','Category name:')}}
{{Form::text('name','',['class'=>'form-control', 'placeholder'=>'Category name'])}}
</div>
<br>
{!!Form::submit('Submit', ['class'=>'btn btn-primary'])!!}
{!!Form::close()!!}
Run Code Online (Sandbox Code Playgroud)