如何使用 Laravel 将数据加载到 Select2
How to load data into Select2 with Laravel
我正在尝试将从数据库中提取的选定值加载到 Select2 中。
ID 值保存在 JSON 字段中,该字段包含 ID 值或我管理为 'All'.
的字段“*”
这是我的控制器方法:
$data['field_id'] = array();
$field_id_array = json_decode(User::find($id) -> field_id);
if( $field_id_array !== null ) {
$field_array = Campo::whereIn('id',$field_id_array)->pluck('field_name','id');
if( in_array( '*' , $field_id_array ) ) {
$field_array -> prepend( 'All' , '*' );
}
$data['field_id'] = $field_array;
}
return view('create', $data);
这是我的视图,我正在使用 Blade:
<select id="field_id" name="field_id[]" multiple>
@if(!empty($field_id))
@foreach($field_id as $f)
<option value = "{!! $f->id !!}" selected >{!! $f->field_name !!}
</option>
@endforeach
@endif
</select>
显示的错误是:
Trying to get property of non-object
如果我在视图循环中只使用 {!! $c !!}
我没有弄错,但它只显示字段 field_name
.
我正在使用带有 ajax 搜索的 Select2,但我没有 post 代码,因为我认为错误是控制器方法中的 99.9%。
有人知道解决问题的方法吗?
Collection::pluck 方法 return 在你的情况下是一个关联数组而不是对象数组,这就是为什么你的循环应该是这样的:
@foreach($field_id as $id => $field_name)
<option value = "{{ $id }}" selected >{{ $field_name }}</option>
@endforeach
如果您使用 blade
并使用 pluck
创建仅包含 2 种类型的数组。您可以使用此语法将 $field_array 传递给视图:
{{Form::select('field_id[]',
$field_array,
'', array('class'=>'your-class',
'id' => 'field_id',
'multiple'))}}
我正在尝试将从数据库中提取的选定值加载到 Select2 中。 ID 值保存在 JSON 字段中,该字段包含 ID 值或我管理为 'All'.
的字段“*”这是我的控制器方法:
$data['field_id'] = array();
$field_id_array = json_decode(User::find($id) -> field_id);
if( $field_id_array !== null ) {
$field_array = Campo::whereIn('id',$field_id_array)->pluck('field_name','id');
if( in_array( '*' , $field_id_array ) ) {
$field_array -> prepend( 'All' , '*' );
}
$data['field_id'] = $field_array;
}
return view('create', $data);
这是我的视图,我正在使用 Blade:
<select id="field_id" name="field_id[]" multiple>
@if(!empty($field_id))
@foreach($field_id as $f)
<option value = "{!! $f->id !!}" selected >{!! $f->field_name !!}
</option>
@endforeach
@endif
</select>
显示的错误是:
Trying to get property of non-object
如果我在视图循环中只使用 {!! $c !!}
我没有弄错,但它只显示字段 field_name
.
我正在使用带有 ajax 搜索的 Select2,但我没有 post 代码,因为我认为错误是控制器方法中的 99.9%。
有人知道解决问题的方法吗?
Collection::pluck 方法 return 在你的情况下是一个关联数组而不是对象数组,这就是为什么你的循环应该是这样的:
@foreach($field_id as $id => $field_name)
<option value = "{{ $id }}" selected >{{ $field_name }}</option>
@endforeach
如果您使用 blade
并使用 pluck
创建仅包含 2 种类型的数组。您可以使用此语法将 $field_array 传递给视图:
{{Form::select('field_id[]',
$field_array,
'', array('class'=>'your-class',
'id' => 'field_id',
'multiple'))}}