php - 如何使用 Laravel 将数据加载到 Select2

标签 php laravel jquery-select2 laravel-blade

我正在尝试将从数据库中提取的选定值加载到 Select2 中。 ID 值保存在一个 JSON 字段中,该字段包含 ID 值或我管理为“全部”的字段“*”。

这是我的 Controller 方法:

$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);

这是我的 View ,我正在使用 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 !!} 在 View 的循环中我没有弄错,但它只显示字段 field_name

我将 Select2 与 ajax 搜索一起使用,但我没有发布代码,因为我认为 Controller 方法中的错误是 99.9%。

有人知道解决问题的办法吗?

最佳答案

Collection::pluck方法在你的情况下返回一个关联数组而不是一个对象数组,这就是为什么你的循环应该是这样的:

@foreach($field_id as $id => $field_name)
    <option value = "{{ $id }}" selected >{{ $field_name }}</option>
@endforeach

关于php - 如何使用 Laravel 将数据加载到 Select2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48065038/

相关文章:

javascript - 使用ajax为select2预选字段

jquery - select2 我可以在 select2 ajax 调用中显示默认选项列表吗

laravel - 如何在不要求用户登录 Laravel 的情况下验证电子邮件

php - 如何将产品的 id 存储在数组中

php - 在 PHP 中组合多个数组值

php - 计算mysql中的所有原始值

php - Laravel - Mongodb [jenssegers/laravel-mongodb] - 架构生成器

php - 如何使用 laravel 基于数据库条目运行 cron 作业?

ios - Select2 自动完成无法使用 cordova 选择/点击 ios

php - XDebug,如何避免每次都停在index.php?