Как скрыть выпадающий список и как выполнить множественный выбор из выпадающего списка?

#laravel #laravel-form

#laravel #laravel-форма

Вопрос:

У меня есть выпадающий список с днями недели, я хочу выбрать несколько дней, например, «понедельник» и «Вторник», у меня есть несколько вопросов по этому поводу

  • 1) Как скрыть выпадающий список множественного выбора? Потому что он показывает весь список
  • 2) Как сделать множественный выбор? должен ли я удерживать CTRL для множественного выбора?
  • 3) Как он будет сохранен в базе данных, если я собираюсь поместить его в виде строки в тот же столбец, который я имею в виду, будет ли это похоже на ‘MondayTuesday’, или ‘Понедельник вторник’, или ‘Понедельник, вторник’

Вот мое мнение

         <div class="form-group">
            {{Form::label('weekdays', 'Week Days')}}

            {{Form::select('weekdays',$weekdays,null,array('name'=>'weekdays[]', 'multiple' => 'multiple'))}}
            {{Form::select('timetable',$time,null,array('name'=>'time[]'))}}
        </div>
  

Контроллер

         $categories_name = Category::pluck('category_name','id');    
        $data = array(
            'weekdays' => [
                'Monday',
                'Tuesday',
                'Wednesday'
            ],
            'time' => [
                '2p.m',
                '3p.m'
            ],
            'categories_name' => $categories_name
        );
        return view('pages.clubs.create_club')->with($data);
    }
  

посмотрите на скриншот, чтобы понять, что я имею в виду

Комментарии:

1. Для 1 и 2 точек вы можете использовать плагин jquery для множественного выбора, вам не нужно удерживать CTRL для этого случая, просто выберите и добавьте … теперь для третьей точки вы можете получить массив категорий и сохранить его в БД в виде длинного текста, выполнив это json_encode($request->get('categories)) , затем во время извлечения категорий сделайте это json_decode($key->categories)

Ответ №1:

Для 1 и 2 вы можете использовать плагин под названием chosen, он хорошо документирован и очень прост в реализации.

Для вопроса № 3 вы можете сохранить его в формате json в базе данных следующим образом:

 $days = "Monday,Tuesday,Wednesday"; 
//or $days = $request->weekdays;
$parsed = explode(",", $days);
$selected_weekdays = json_encode($parsed);

Model::create(['weekdays' => $selected_weekdays]);
  

Затем вы можете отобразить значение на блейде, расшифровав строку json следующим образом:

 $selected_weekdays = json_decode($model->weekdays);

{{Form::select('weekdays[]',$weekdays,$selected_weekdays,array('multiple' => 'multiple'))}}
  

ОБНОВЛЕНИЕ 1:

Желательно установить его с помощью bower:

 bower install chosen
  

Чтобы использовать выбранный:

 <link rel='stylesheet' type="text/css" href="{{ asset('bower_components/chosen/chosen.min.css') }}" rel="stylesheet">

{{Form::select('weekdays[]',$weekdays,$selected_weekdays,array('multiple' => 'multiple', 'class' => 'chosen-select'))}}

<script src="{{ asset('bower_components/chosen/chosen.jquery.min.js') }}"></script>

<script>
    $(".chosen-select").chosen();
</script>
  

Комментарии:

1. можете ли вы объяснить мне, как я должен объявить выбранный в форме? я установил его с помощью composer, не могли бы вы показать мне, как показать, как это сделать

2. @NurdauletShamilov — пожалуйста, проверьте обновление моего ответа о том, как использовать выбранный