{"id":220,"date":"2023-03-14T10:31:50","date_gmt":"2023-03-14T07:31:50","guid":{"rendered":"http:\/\/antyat.ru\/?p=220"},"modified":"2024-01-12T10:32:56","modified_gmt":"2024-01-12T07:32:56","slug":"%d0%bf%d1%80%d0%be%d0%b5%d0%ba%d1%82-%d0%bd%d0%b0-laravel-10-bootstrap-5-jquery","status":"publish","type":"post","link":"http:\/\/antyat.ru\/?p=220","title":{"rendered":"\u041f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 Laravel 10 + Bootstrap 5 + Jquery"},"content":{"rendered":"\n<p>\u0421\u0442\u0430\u0432\u0438\u043c \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a<\/p>\n<pre>composer create-project laravel\/laravel<\/pre>\n\n\n\n<p>\u0421\u0442\u0430\u0432\u0438\u043c \u043f\u0430\u043a\u0435\u0442 \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">composer require laravel\/ui<\/pre>\n\n\n\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c bootstrap 5<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">php artisan ui bootstrap --auth\n<\/pre>\n\n\n\n<p>\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">npm install <\/pre>\n\n\n\n<p>\u0421\u0442\u0430\u0432\u0438\u043c bootstrap-icons<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">npm install bootstrap-icons <\/pre>\n\n\n\n<p>Inside your project, open the file&nbsp;<strong>resources\\sass\\app.scss<\/strong>&nbsp;and add :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">@import 'bootstrap-icons\/font\/bootstrap-icons.css';<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\"><em>\/\/ Fonts<br><\/em>@import url('https:\/\/fonts.bunny.net\/css?family=Nunito');<br><br><em>\/\/ Variables<br><\/em>@import 'variables';<br><br><em>\/\/ Bootstrap<br><\/em>@import 'bootstrap\/scss\/bootstrap';<br>@import 'bootstrap-icons\/font\/bootstrap-icons.css';<\/pre>\n\n\n\n<p> <\/p>\n\n\n\n<p><strong>Import vite.config.js Bootstrap 5 Path<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">import { <em>defineConfig <\/em>} from 'vite';<br>import <em>laravel <\/em>from 'laravel-vite-plugin';<br>import path from 'path'<br>export default <em>defineConfig<\/em>({<br>    plugins: [<br>        <em>laravel<\/em>({<br>            input: [<br>                'resources\/sass\/app.scss',<br>                'resources\/js\/app.js',<br>            ],<br>            refresh: true,<br>        }),<br>    ],<br>    resolve: {<br>        alias: {<br>            '~bootstrap': path.resolve(__dirname, 'node_modules\/bootstrap'),<br>        }<br>    },<br>});<\/pre>\n\n\n\n<p><strong>Update bootstrap.js<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">npm install lodash<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">import loadash from 'lodash';\nwindow._ = loadash;\n\n\/\/ UPDATE THIS LINES OF bootstrap.js FILE\nimport $ from 'jquery';\nwindow.$ = $;\n\nimport * as Popper from '@popperjs\/core'\nwindow.Popper = Popper\n\nimport 'bootstrap';\n\n\/**\n * We'll load the axios HTTP library which allows us to easily issue requests\n * to our Laravel back-end. This library automatically handles sending the\n * CSRF token as a header based on the value of the \"XSRF\" token cookie.\n *\/\n\nimport axios from 'axios';\nwindow.axios = axios;\n\nwindow.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n\n\/**\n * Echo exposes an expressive API for subscribing to channels and listening\n * for events that are broadcast by Laravel. Echo and event broadcasting\n * allows your team to easily build robust real-time web applications.\n *\/\n\n\/\/ import Echo from 'laravel-echo';\n\n\/\/ import Pusher from 'pusher-js';\n\/\/ window.Pusher = Pusher;\n\n\/\/ window.Echo = new Echo({\n\/\/     broadcaster: 'pusher',\n\/\/     key: import.meta.env.VITE_PUSHER_APP_KEY,\n\/\/     wsHost: import.meta.env.VITE_PUSHER_HOST ?? `ws-${import.meta.env.VITE_PUSHER_APP_CLUSTER}.pusher.com`,\n\/\/     wsPort: import.meta.env.VITE_PUSHER_PORT ?? 80,\n\/\/     wssPort: import.meta.env.VITE_PUSHER_PORT ?? 443,\n\/\/     forceTLS: (import.meta.env.VITE_PUSHER_SCHEME ?? 'https') === 'https',\n\/\/     enabledTransports: ['ws', 'wss'],\n\/\/ });\n<\/pre>\n\n\n\n<p>Now we need to import bootstrap 5 SCSS path in&nbsp;<code>resources\/js\/app.js<\/code>&nbsp;file:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">import '.\/bootstrap';<br>import '..\/sass\/app.scss'<\/pre>\n\n\n\n<p>use&nbsp;<strong>@vite<\/strong>&nbsp;directive<\/p>\n<pre><code>@vite(['resources\/js\/app.js'])<\/code><\/pre>\n\n\n\n<p><em>views\/layouts\/app.blade<\/em><\/p>\n<pre><code>&lt;!doctype html&gt;\n&lt;html lang=\"{{ str_replace('_', '-', app()-&gt;getLocale()) }}\"&gt;\n&lt;head&gt;\n    &lt;meta charset=\"utf-8\"&gt;\n    &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"&gt;\n\n    &lt;!-- CSRF Token --&gt;\n    &lt;meta name=\"csrf-token\" content=\"{{ csrf_token() }}\"&gt;\n\n    &lt;title&gt;{{ config('app.name', 'Install Bootstrap 5 in Laravel 10 With Vite') }}&lt;\/title&gt;\n\n    &lt;!-- Fonts --&gt;\n    &lt;link rel=\"dns-prefetch\" href=\"\/\/fonts.gstatic.com\"&gt;\n    &lt;link href=\"https:\/\/fonts.googleapis.com\/css?family=Nunito\" rel=\"stylesheet\"&gt;\n\n    <strong>@vite(['resources\/js\/app.js'])<\/strong>\n\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;div id=\"app\"&gt;\n        &lt;nav &gt;\n            &lt;div &gt;\n                &lt;a  href=\"{{ url('\/') }}\"&gt;\n                    {{ config('app.name', 'Laravel') }}\n                &lt;\/a&gt;\n                &lt;button  type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarSupportedContent\" aria-controls=\"navbarSupportedContent\" aria-expanded=\"false\" aria-label=\"{{ __('Toggle navigation') }}\"&gt;\n                    &lt;span &gt;&lt;\/span&gt;\n                &lt;\/button&gt;\n\n                &lt;div  id=\"navbarSupportedContent\"&gt;\n                    &lt;!-- Left Side Of Navbar --&gt;\n                    &lt;ul &gt;\n\n                    &lt;\/ul&gt;\n\n                    &lt;!-- Right Side Of Navbar --&gt;\n                    &lt;ul &gt;\n                        &lt;!-- Authentication Links --&gt;\n                        @guest\n                            @if (Route::has('login'))\n                                &lt;li &gt;\n                                    &lt;a  href=\"{{ route('login') }}\"&gt;{{ __('Login') }}&lt;\/a&gt;\n                                &lt;\/li&gt;\n                            @endif\n\n                            @if (Route::has('register'))\n                                &lt;li &gt;\n                                    &lt;a  href=\"{{ route('register') }}\"&gt;{{ __('Register') }}&lt;\/a&gt;\n                                &lt;\/li&gt;\n                            @endif\n                        @else\n                            &lt;li &gt;\n                                &lt;a id=\"navbarDropdown\"  href=\"#\" role=\"button\" data-bs-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\" v-pre&gt;\n                                    {{ Auth::user()-&gt;name }}\n                                &lt;\/a&gt;\n\n                                &lt;div  aria-labelledby=\"navbarDropdown\"&gt;\n                                    &lt;a  href=\"{{ route('logout') }}\"\n                                       onclick=\"event.preventDefault();\n                                                     document.getElementById('logout-form').submit();\"&gt;\n                                        {{ __('Logout') }}\n                                    &lt;\/a&gt;\n\n                                    &lt;form id=\"logout-form\" action=\"{{ route('logout') }}\" method=\"POST\" &gt;\n                                        @csrf\n                                    &lt;\/form&gt;\n                                &lt;\/div&gt;\n                            &lt;\/li&gt;\n                        @endguest\n                    &lt;\/ul&gt;\n                &lt;\/div&gt;\n            &lt;\/div&gt;\n        &lt;\/nav&gt;\n\n        &lt;main &gt;\n            @yield('content')\n        &lt;\/main&gt;\n    &lt;\/div&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"installing-jquery-in-laravel-with-vite\">Installing jQuery in Laravel with Vite<a href=\"https:\/\/mazer.dev\/en\/laravel\/posts\/how-to-use-jquery-with-laravel-and-vite\/#installing-jquery-in-laravel-with-vite\"><\/a><\/h3>\n\n\n\n<p>jQuery is installed using a node package manager, with a single command from the terminal. I will use&nbsp;<code>npm<\/code>.<\/p>\n\n\n\n<p>At the root folder of your Laravel application run the following command.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">npm install jquery --save-dev<\/pre>\n\n\n\n<p>You need to<em>\u00a0npm run build<\/em>\u00a0command to create asset bootstrap 5.<\/p>\n<pre><code>npm run build<\/code><\/pre>\n\n\n\n<p>\u00a0<\/p>\n<h1 class=\"fs-headline1 ow-break-word mb8 flex--item fl1\"><a class=\"question-hyperlink\" href=\"https:\/\/stackoverflow.com\/questions\/76399528\/importing-select2-laravel-vite\">Importing Select2 &amp; Laravel Vite<\/a><\/h1>\n<p>To get it working without alias, follow these steps:<\/p>\n<ol>\n<li>Install\u00a0<strong>jquery<\/strong>\u00a0and\u00a0<strong>select2<\/strong>:<\/li>\n<\/ol>\n<pre><code>npm i jquery select2 --save-dev\n<\/code><\/pre>\n<ol start=\"2\">\n<li>Edit\u00a0<strong>bootstrap.js<\/strong>\u00a0for referencing\u00a0<strong>jquery<\/strong>\u00a0and\u00a0<strong>select2<\/strong><\/li>\n<\/ol>\n<pre class=\"lang-js s-code-block\"><code class=\"hljs language-javascript\"><span class=\"hljs-comment\">\/\/ import jquery and select2<\/span>\n<span class=\"hljs-keyword\">import<\/span> $ <span class=\"hljs-keyword\">from<\/span> <span class=\"hljs-string\">\"jquery\"<\/span>;\n<span class=\"hljs-keyword\">import<\/span> select2 <span class=\"hljs-keyword\">from<\/span> <span class=\"hljs-string\">'select2'<\/span>;\n<span class=\"hljs-variable language_\">window<\/span>.<span class=\"hljs-property\">$<\/span> = $; <span class=\"hljs-comment\">\/\/ &lt;-- jquery must be set<\/span>\n<span class=\"hljs-title function_\">select2<\/span>(); <span class=\"hljs-comment\">\/\/ &lt;-- select2 must be called<\/span>\n<\/code><\/pre>\n<ol start=\"3\">\n<li>Import\u00a0<strong>select2 CSS<\/strong>\u00a0in\u00a0<strong>app.js<\/strong><\/li>\n<\/ol>\n<pre class=\"lang-js s-code-block\"><code class=\"hljs language-javascript\"><span class=\"hljs-comment\">\/\/-- Select2<\/span>\n<span class=\"hljs-keyword\">import<\/span> <span class=\"hljs-string\">\"\/node_modules\/select2\/dist\/css\/select2.css\"<\/span>;\n<span class=\"hljs-comment\">\/\/--<\/span>\n<span class=\"hljs-keyword\">import<\/span> <span class=\"hljs-string\">'..\/css\/app.css'<\/span>;\n<span class=\"hljs-comment\">\/\/ ...<\/span>\n<\/code><\/pre>\n<p>Now you can use it in your components:<\/p>\n<pre class=\"lang-js s-code-block\"><code class=\"hljs language-javascript\">$(<span class=\"hljs-string\">'.js-example-basic-single'<\/span>).<span class=\"hljs-title function_\">select2<\/span>();<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u0421\u0442\u0430\u0432\u0438\u043c \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a composer create-project laravel\/laravel \u0421\u0442\u0430\u0432\u0438\u043c \u043f\u0430\u043a\u0435\u0442 \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 composer require laravel\/ui \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c bootstrap 5 php artisan ui bootstrap &#8212;auth \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c npm install \u0421\u0442\u0430\u0432\u0438\u043c bootstrap-icons npm install bootstrap-icons Inside your project, open the file&nbsp;resources\\sass\\app.scss&nbsp;and add : @import &#8216;bootstrap-icons\/font\/bootstrap-icons.css&#8217;; \/\/ Fonts@import url(&#8216;https:\/\/fonts.bunny.net\/css?family=Nunito&#8217;);\/\/ Variables@import &#8216;variables&#8217;;\/\/ Bootstrap@import &#8216;bootstrap\/scss\/bootstrap&#8217;;@import &#8216;bootstrap-icons\/font\/bootstrap-icons.css&#8217;; Import vite.config.js Bootstrap 5 Path import { defineConfig } [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-220","post","type-post","status-publish","format-standard","hentry","category-1"],"_links":{"self":[{"href":"http:\/\/antyat.ru\/index.php?rest_route=\/wp\/v2\/posts\/220","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/antyat.ru\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/antyat.ru\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/antyat.ru\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/antyat.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=220"}],"version-history":[{"count":5,"href":"http:\/\/antyat.ru\/index.php?rest_route=\/wp\/v2\/posts\/220\/revisions"}],"predecessor-version":[{"id":237,"href":"http:\/\/antyat.ru\/index.php?rest_route=\/wp\/v2\/posts\/220\/revisions\/237"}],"wp:attachment":[{"href":"http:\/\/antyat.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=220"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/antyat.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=220"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/antyat.ru\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=220"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}