代码之家  ›  专栏  ›  技术社区  ›  Jesse Orange

正在检索Selectize的值。js

  •  0
  • Jesse Orange  · 技术社区  · 6 年前

    我在用 Selectize.js 创建类似标签的体验,使用系统的当前用户将用户添加到作业中。

    在我看来

    在文档之后,我有一个带有 倍数 属性,该属性由系统上的用户填充。我还通过添加方括号声明了该输入是一个数组。

    <select name="job_administrator[]" multiple id="selectize" class="form-control{{ $errors->has('job_administrator') ? ' is-invalid' : '' }}">
        <option value="">Select a user </option>
        @foreach($users as $user)
        <option value="{{ $user->id }}">{{ $user->full_name }} - {{ $user->access_level }}</option>
        @endforeach
    </select>
    

    然后,我初始化插件

    $('#selectize').selectize({
        placeholder: 'Select user',
        plugins: ['remove_button'],
        delimiter: ',',
        persist: false,
    })
    

    在我的控制器里

    /**
     * Handle adding job administrators to jobs
     *
     * @param Array $data
     * @return void
     */
    public function addAdministrators(Array $data, int $id)
    {
        $vacancy = JobPost::where('id', $id)->first();
    
        if(!empty($data['job_administrator'])){
            $jobAdmins = $data['job_administrator'];
    
            // Grab the IDs for the tags in the array
            $admins = Admin::whereIn('id', $jobAdmins)->get()->pluck('id');
    
            $vacancy->administrators()->sync($admins);
        } else {
            // If there were no tags, remove them from this model instance
            $vacancy->administrators()->sync(array());
        }
    
    }
    

    我的问题是:在编辑屏幕上,使用Selectize时是否可以预先填充所选项目?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Rings    6 年前

    可以,只需将所选属性添加到选项中即可。你可以这样做。

    <option value="{{ $user->id }}" {{$selected->contains($user->id) ? 'selected' : ''}}>{{ $user->full_name }} - {{ $user->access_level }}</option>
    

    然后,$selected是一组ID。