【问题标题】:Laravel form builder multi select selected itemsLaravel 表单生成器多选选定项目
【发布时间】:2017-08-27 10:39:48
【问题描述】:

在多选中显示所选项目时遇到问题。

在“index.blade.php”实体视图中有一个“filter.blade.php”子视图

子视图片段,表单输入,多选之一:

<div class="col-lg-4 col-md-4 form-group">
    {!! Form::label('subcategories', trans('art-work.subcategory'), ['class' => 'control-label']) !!}
    {!! Form::select('subcategories[]', $subcategories, $_subcategories,
        [
            'id' => 'subcategories',
            'class' => 'form-control select2',
            'multiple' => 'multiple',
            'data-placeholder' => trans('crud.choose'),
    ]) !!}
</div>
....
{{ Log::info('subcategories', $_subcategories) }}

控制器动作,处理来自请求的输入以过滤结果

public function filter(Request $request)
{
    $this->validate($request, $this->filterRules);
    $filters = [
        'category_id'     => (int) $request->category_id,
        'subcategories'   => $request->subcategories,
        'grades'          => $request->grades,
        'students'        => $request->students,
        'professors'      => $request->professors,
    ];

    $works = ArtWork::filtered($filters);
    $subcategories = Category::where('category_id', $filters['category_id'])
        ->get()
        ->pluck('title', 'id')
        ->toArray();

    return view('panel.art-work.index', [
        'works'           => $works,
        'subcategories'   => $subcategories,

        '_category'       => $filters['category_id'],
        '_subcategories'  => $filters['subcategories'],
        '_grades'         => $filters['grades'],
        '_students'       => $filters['students'],
        '_professors'     => $filters['professors'],

        '_filter'         => true,
    ]);
}

因此,当过滤器表单提交给控制器并显示带有“_subcategories”等变量的视图时,应该从多选中的请求中选择 id。但没有选择任何内容。

http://joxi.ru/82QeLzDi135Xy2

这很奇怪,我卡住了......

谢谢

【问题讨论】:

    标签: forms laravel-5 laravel-5.4 formbuilder laravelcollective


    【解决方案1】:

    我的工作解决方案是:

    字符串化每个选项值(在我的例子中是 ID)。

    在 html 中,而不是

    <select>
       <option value="1">First</option>
       <option value="2">Second</option>
       ...
       <option value="n">Nth</option>
    
    <select>
    

    应该是这样的

    <select>
           <option value="d1">First</option>
           <option value="d2">Second</option>
           ...
           <option value="dn">Nth</option>
    
    <select>
    

    因此,在为表单构建器多选传递带有键值对的数组之前,我在值中添加了字母,例如“d”。

    并且,在使用选定项目提交表单后,我会在处理这些数据之前清除每个值并删除字母

    【讨论】:

      猜你喜欢
      • 2017-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-25
      • 2017-11-27
      • 1970-01-01
      • 1970-01-01
      • 2019-06-25
      相关资源
      最近更新 更多