У меня есть веб-приложение Laravel. Я добавляю функциональность через файлы Javascript. В частности, я хочу, чтобы некоторые текстовые поля отображались как Select2 поля ввода.
В app.blade.php у меня есть следующее:
<!-- Scripts -->
<script src="{{ asset('js/app.js') }}" defer></script>
@yield('scripts');
В create.blade.php у меня есть ссылка на файл select2 js и некоторый пользовательский код js.
@section('scripts')
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.min.js"></script>
<script>
$(document).ready(function() {
$('.js-example-basic-multiple').select2();
});
</script>
@endsection('scripts')
В результате
> select2.min.js:1 Uncaught ReferenceError: jQuery is not defined
> create:174 Uncaught ReferenceError: $ is not defined
Я уверен, что jQuery загружен так, как это определено в файле bootstrap.js следующим образом (и работает для других функций, таких как dropbox):
try {
//window.$ = window.jQuery = require("jquery/dist/jquery.slim");
window.$ = window.jQuery = require("jquery");
require("bootstrap");
} catch (e) {}
Когда я удаляю ссылку app.js в app.blade.php (поэтому этот экземпляр jQuery не загружается) и вручную добавляю jQuery в create.blade.php (поэтому загружается только один экземпляр jQuery), все работает. Смотрите ниже:
app.blade.php
<!-- Scripts -->
@yield('scripts');
create.blade.php
@section('scripts')
<script
src="https://code.jquery.com/jquery-3.3.1.js"
integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60="
crossorigin="anonymous">
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('.js-example-basic-multiple').select2();
});
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.4.0/dropzone.js"></script>
<script src="{{ asset('js/dropzone.js') }}" defer></script>
@endsection
Если я сделаю это, поле ввода будет отображаться как теги, что я и хочу. Однако это приводит к невозможности выхода из приложения Laravel (поскольку app.js удален).
Как я могу убедиться, что select2 работает с экземпляром jquery файла app.js?