我有这段代码:
<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>
因此,当表单出错时,我会使用行Redirect::route('xpto')->withInput()->withErrors($v)
。但我不能重新填充选择字段。没有使用JavaScript的任何方法吗?
答案 0 :(得分:48)
此外,您可以使用?
运算符来避免使用@if @else @endif
语法。变化:
@if (Input::old('title') == $key)
<option value="{{ $key }}" selected>{{ $val }}</option>
@else
<option value="{{ $key }}">{{ $val }}</option>
@endif
简单地说:
<option value="{{ $key }}" {{ (Input::old("title") == $key ? "selected":"") }}>{{ $val }}</option>
答案 1 :(得分:10)
解决方案是将Input::old()
与$key
变量进行比较。
@if (Input::old('title') == $key)
<option value="{{ $key }}" selected>{{ $val }}</option>
@else
<option value="{{ $key }}">{{ $val }}</option>
@endif
答案 2 :(得分:7)
在玩了一下之后,我想出了这个,它看起来非常出色
<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%错误,但它在我的许多测试中都能正常工作。在网站上看到一些其他帖子后,我看到有人建议利用in_array($ needle,$ array)函数,但在注意到如果我的旧('options')为null之后会出错,因为它需要in_array要求,打赌你猜到一个阵列。因此,在找到解决方案之后,虽然我使用了收集方法,但我们正在使用larval,因为我们正在使用larval。好吧无论如何丑陋的解决方案如下
@if (old("options")){{ (in_array($option->id, old("options")) ? "selected":"") }}@endif
内联,但对我来说看起来很难看的男人这么长的故事,我正在使用以下代替
{{ (collect(old('options'))->contains($option->id)) ? 'selected':'' }}
希望这有助于其他人!!
这对于非多重选择字段似乎不起作用,但是可以使用一个可以为此工作的字段。
答案 3 :(得分:7)
<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>
答案 4 :(得分:4)
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()!!}
答案 5 :(得分:3)
最好的方法是关注
r.json()
答案 6 :(得分:2)
除了使用Input类之外,您还可以使用old()帮助程序来缩短它。
<option {{ old('name') == $key ? "selected" : "" }} value="{{ $value }}">
答案 7 :(得分:2)
<select class="form-control" name="kategori_id">
<option value="">-- PILIH --</option>
@foreach($kategori as $id => $nama)
@if(old('kategori_id', $produk->kategori_id) == $id )
<option value="{{ $id }}" selected>{{ $nama }}</option>
@else
<option value="{{ $id }}">{{ $nama }}</option>
@endif
@endforeach
</select>
答案 8 :(得分:1)
<option value="{{ $key }}" {{ Input::old('title') == $key ? 'selected="selected"' : '' }}>{{ $val }}</option>
答案 9 :(得分:1)
我的解决方案是循环,只是为了避免重复选项
<select class="form-control" name="status" >
<?php $lists = ['Current', 'Win', 'Lose']; ?>
@foreach($lists as $list)
<option value={{$list}} {{(old('status') == $list?'selected':'')}} >{{$list}}</option>
@endforeach
</select>
答案 10 :(得分:1)
这将为您提供帮助,只需与old(如果存在)进行比较,如果不存在,则与默认值进行比较
<select name="select_name">
@foreach($options as $key => $text)
<option {{ ($key == old('select_name',$default))?'selected':'' }}> {{ $text }} </option>
@endforeach
</select>
$default
是从控制器注入到视图的值
答案 11 :(得分:1)
<select style="width: 100%;" name="id_driver" id="id_driver" >
<option value="" @if (old('id_driver') == "") selected @endif>Select</option>
@foreach(\App\Driver::all() as $driver)
<option value="{{$driver->id}}" @if (old('id_driver') == $driver->id)
selected @endif >(#{{$driver->id}}) {{$driver->business_name}}
</option>
@endforeach
</select>
答案 12 :(得分:0)
<div class="ma-subnav__item" data-turbolinks="false">
<div class="content" data-turbolinks="false">
<ul class="normal-ul" data-turbolinks="false">
<li class="dropdown" data-turbolinks="false">
<a href="#" data-turbolinks="false" class="link-reset" data-toggle="dropdown">Information <i class="icon-arrow"></i></a>
<ul class="dropdown-menu" data-turbolinks="false">
<li><%= link_to "Why", welcome_why_path, class: "link-reset" %></li>
<li><%= link_to "How", welcome_how_path, class: "link-reset" %></li>
<li><%= link_to "Resources", welcome_resources_path, class: "link-reset" %></li>
<li><%= link_to "Contact Us", welcome_feedback_path, class: "link-reset" %></li>
</ul>
</li></ul>
</div>
</div>
答案 13 :(得分:0)
好的,我的2美分,使用Laravel的old()函数的默认值。
public class ActivityA extends Activity {
private void gotoActivityB(){
startActivityForResult(new Intent(this,ActivityB.class),101);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 101 {
if (resultCode == RESULT_OK) {
String value = data.getStringExtra("KEY");
}
}
}
}
public class ActivityB extends Activity {
@Override
protected void onDestroy() {
super.onDestroy();
Intent intent = new Intent();
intent.putExtra("KEY",editTextValue);
setResult(Activity.RESULT_OK,intent);
}
}
答案 14 :(得分:0)
这很容易理解和实施。
<select class="form-control m-input m-input--air">
@foreach ($countries as $key)
@if( $key->name == $user->country )
<option value="{{ $key->name }}" selected="selected"> {{ $key->name }}</option>
@else
<option value="{{ $key->name }}"> {{ $key->name }}</option>
@endif
@endforeach
</select>
答案 15 :(得分:0)
考虑到用户也想编辑他们之前的输入,
<select name="title">
@foreach ($titles as $key => $value)
<option value="{{$value->id}}" {{(old('title', $user->title_id) == $value->id ? 'selected' : '')}} > {{$value->name}} </option>
@endforeach
</select>
old('title', $user->title_id) 第一次返回用户保存的 title_id,如果验证失败则返回用户选择的 title_id。然后如果它与当前选项ID匹配,则它被选中。