В моем проекте у меня есть отношения «многие ко многим» между фильмами и актерами, фильмами и категориями. И когда я пытаюсь создать фильм, а затем пытаюсь добавить актеров и категории с помощью Select2, он не перечисляет доступные параметры (поля ввода выглядят серыми, как будто они заблокированы). Я посмотрел, загружаются ли скрипты, и они загружаются. Вот мой код.
MovieController:
public function create()
{
$actors = Actor::pluck('actor_name', 'id');
$categories = Category::pluck('category_name', 'id');
return view('movies.create', compact('actors', 'categories'));
}
create.blade.php:
@extends('layouts.app')
@section('title', '| Upload Movie')
@section('stylesheets')
{!! Html::style('css/select2.min.css') !!}
@endsection
@section('content')
<div class = "container">
<div class = "row">
<div class = "col-md-12">
<div class = "row">
<div class = "col-md-6">
{!! Form::open(['method'=>'POST', 'action'=> 'MovieController@store']) !!}
<div class = "form-group">
{!! Form::label('movie_name', 'Name:') !!}
{!! Form::text('movie_name', null, ['class'=>'form-control'])!!}
</div>
<div class = "form-group">
{!! Form::label('actor_id', 'Actors:') !!}
{!! Form::select('actor_id[]', $actors, null, ['class'=>'form-control select2-multi', 'multiple' => 'multiple']) !!}
</div>
<div class = "form-group">
{!! Form::label('category_id', 'Category:') !!}
{!! Form::select('category_id[]', $categories, null, ['class'=>'form-control select2-multi', 'multiple' => 'multiple']) !!}
</div>
<div class = "form-group">
{!! Form::submit('Upload Movie', ['class'=>'btn btn-primary']) !!}
</div>
{!! Form::close() !!}
</div>
</div>
</div>
</div>
</div>
@endsection
@section('scripts')
{!! Html::script('js/select2.min.js') !!}
<script type = "text/javascript">
$('.select2-multi').select2();
</script>
@endsection






Непосредственно из документации Select2:
The DOM cannot be safely manipulated until it is "ready". To make sure that your DOM is ready before the browser initializes the Select2 control, wrap your code in a $(document).ready() block. Only one $(document).ready() block is needed per page.
https://select2.org/getting-started/basic-usage
Итак, ваш код должен быть:
<script type = "text/javascript">
$(document).ready(function() {
$('.select2-multi').select2();
});
</script>
Похоже, вам нужно переместить некоторые таблицы стилей CSS в заголовок макета. (Каскадный порядок)
Я сделал это, и теперь он показывает доступных актеров и категории, но при использовании select он по-прежнему выглядит как стандартный laravel.