Почему Laravel bootstrap drowdown не работает - PullRequest
0 голосов
/ 07 апреля 2020

вот мой navbar

<nav class="navbar navbar-expand-md navbar-dark bg-dark fixed-top">
    <a class="navbar-brand" href="/teashirt/public/">TeaShirt</a>
    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault" aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
    </button>

    <div class="collapse navbar-collapse" id="navbarsExampleDefault">
        <ul class="navbar-nav mr-auto">
            <li class="nav-item active">
                <a class="nav-link" href="/teashirt/public/">Home <span class="sr-only">(current)</span></a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="/teashirt/public/design">Desing your Teashirt</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="/teashirt/public/about">About Us</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="/teashirt/public/contact">Contact</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="/teashirt/public/checkout">Checkout</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="/teashirt/public/cart" tabindex="-1" aria-disabled="true">Cart</a>
            </li>
            <li class="nav-item dropdown">
                <a class="nav-link dropdown-toggle" href="#" id="dropdown01" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Guest!</a>
                <div class="dropdown-menu" aria-labelledby="dropdown01">
                    <a class="dropdown-item" href="#">Profile</a>
                    <a class="dropdown-item" href="#">Another action</a>
                    <a class="dropdown-item" href="#">Logout</a>
                </div>
            </li>
        </ul>
        <form class="form-inline my-2 my-lg-0">
            <input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
            <button class="btn btn-secondary my-2 my-sm-0" type="submit">Search</button>
        </form>
    </div>
</nav>

Вот мой бутсрап. js

window._ = require('lodash');

/**
 * We'll load jQuery and the Bootstrap jQuery plugin which provides support
 * for JavaScript based Bootstrap features such as modals and tabs. This
 * code may be modified to fit the specific needs of your application.
 */

try {
    window.Popper = require('popper.js').default;
    window.$ = window.jQuery = require('jquery');

    require('bootstrap');
} catch (e) {}

/**
 * We'll load the axios HTTP library which allows us to easily issue requests
 * to our Laravel back-end. This library automatically handles sending the
 * CSRF token as a header based on the value of the "XSRF" token cookie.
 */

window.axios = require('axios');

window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';

вот мое приложение. js

require('./bootstrap');

Код Visual Studio предложил заменить require на import, сделал, чтобы он не работал.

Я пробовал -popper upgrade - composer update

Ничего не работает. Все работает на панели навигации, но когда я нажимаю раскрывающийся список, он просто идет по ссылке / #. Я пробовал это на IE и chrome. Тот же результат

Ответы [ 3 ]

0 голосов
/ 08 апреля 2020
Adding this just before the `</body>` tagsolved my problem. 

<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script>

Я попробовал это и раньше. Но я думаю, что перепробовал так много вещей, что не могу сказать, почему это не сработало раньше, чем сейчас.

0 голосов
/ 12 апреля 2020

Я не думаю, что ответ полностью решен, поскольку это решение не очень приемлемо. Я мог воспроизвести ошибку при выполнении последней установки laravel 7 composer, за которой следовали "artisan ui bootstrap" и npm install && npm run dev:

Я получаю следующая ошибка при использовании свертки

Это значение var 'config'

Может быть проблема с веб-пакетом, так как здесь, похоже, такое же поведение : https://github.com/webpack/webpack/issues/10504

Я еще не нашел решения - пробовал разные версии laravel -mix, jquery и bootstrap.

0 голосов
/ 08 апреля 2020

Исходя из ваших файлов, я предполагаю, что ваша проблема может быть одной из следующих

1) Исходные карты в webpack.mix. Попробуйте выполнить следующие действия:

const mix = require('laravel-mix');

mix.setPublicPath('public')
.setResourceRoot('../') // Turns assets paths in css relative to css 
.mix.js('resources/js/app.js', 'public/js')
.sass('resources/sass/app.scss', 'public/css')
.sourceMaps();

2) Убедитесь, что в вашем браузере не включены блокировщики рекламы. Это может заблокировать некоторые из js

3) Измените ваш bootstrap.js на следующий

import _ from 'lodash';
import $ from 'jquery';
import 'popper.js'; // Required for BS4
import 'bootstrap';

window.$ = window.jQuery = $;
window._ = _; // Lodash

window.axios = require('axios');

window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';

Надеюсь, это поможет. Дайте мне знать, какое решение сработало для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...