我为类别和子类别创建了一个下拉列表。当我提交表单时它工作正常,但是当我编辑表单时,类别字段没有来自数据库的重新填充数据,类别下拉列表就像它在创建表单中显示的一样。
这是我的编辑:
<div class="form-group">
{!! Form::label('category','Category:') !!}
<select name="category" id="category" class="form-control input-sm">
@foreach($s as $k)
<option value="{{ $k['id'] }}">{{ $k['name'] }}</option>
@endforeach
</select>
</div>
<div class="form-group">
{!! Form::label('subcategory','Subcategory:') !!}
<select name="subcategory" id="subcategory" class="form-control input-sm">
<option value=""></option>
</select>
</div>
控制器:
public function edit($id)
{
// get the event
$event = Event::findOrFail($id);
$s = Category::all()->where('parent_id','=','0');
$r = Event::all();
$daysOfWeek = unserialize(Event::find($id)->days_of_week);
// show the edit form and pass the event
return view('event.edit',compact('event','s','r','daysOfWeek'));}
我没有在下拉菜单中使用关系,我在选择类别后使用 jquery 和 ajax 选择子类别。当我编辑表单时,我该怎么做才能获取存储在数据库中的值?
我得到了答案,感谢每个人的帮助!
视图:
<div class="form-group">
{!! Form::label('category','Category:') !!}
<select name="category" id="category" class="form-control input-sm">
@foreach($s as $k)
@if($k['id'] == $m)
<option value="{{ $k['id'] }}" selected="{{$m}}">{{ $k['name'] }}</option>
@else
<option value="{{ $k['id'] }}">{{ $k['name'] }}</option>
@endif
@endforeach
</select>
</div>
<div class="form-group">
{!! Form::label('subcategory','Subcategory:') !!}
<select name="subcategory" id="subcategory" class="form-control input-sm">
@foreach($subcat as $k)
@if($k['name'] == $subid)
<option value="{{ $k['id'] }}" selected="{{$subid}}">{{ $k['name'] }}</option>
@else
<option value="{{ $k['id'] }}">{{ $k['name'] }}</option>
@endif
@endforeach
<option value=""></option>
</select>
</div>
控制器:
public function edit($id)
{
$event = Event::findOrFail($id);
$s = Category::where('parent_id','=','0')->get();
$r = Event::all();
$m = Event::find($id)->category;
$subid = Event::find($id)->subcategory;
$subcat = Category::where('parent_id','=',$m)->get();
$daysOfWeek = unserialize(Event::find($id)->days_of_week);
return view('event.edit',compact('event','s','subcat','subid','r','daysOfWeek','m'));
}
控制器方法中存在错误edit()
您的代码:
$s = Category::all()->where('parent_id','=','0'); // wrong
那不是应该的:
$s = Category::where('parent_id','=','0')->get(); // correct
您已经在获取带有 all
的类别,然后传递where
条件,因此它不会向您显示结果。 where
条件返回Illuminate'Database'Eloquent'Builder
的instance
,而不是所需的结果。
用正确的行更新错误的行,结果应如您所愿。