成功登录后,Laravel无法从菜单中退出选项

时间:2016-12-20 18:57:57

标签: php authentication twitter-bootstrap-3 laravel-5 navbar

希望其他人有同样的问题,并能够解决这个问题。 我安装了一个新的Laravel项目并使用 php artisan make:auth 来获得基本的auth工作。奇怪的是,成功登录后,导航栏中没有注销链接。它应该在用户名(有一个下拉选项)下可用,但当我点击我的用户名时没有任何反应。

任何人都有解决方案吗?非常感谢帮助。

6 个答案:

答案 0 :(得分:2)

问题解决了:

似乎Laravel没有加载正确的JQuery文件以使其工作。 一定要加载正确的JQuery库,如下所示:

<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>

答案 1 :(得分:1)

要回答这个问题已有一段时间了,但我认为以下信息对某人可能和对我一样有用...

如果您使用过npm的SASS编译器,Webpack将把所有CSS压缩到app.css中,并将所有Javascript压缩到app.js中。 app.js包含Bootstrap中的所有Javascript,因此单独包含Bootstrap js似乎会破坏下拉菜单。

我发现删除了自己对Bootstrap js文件的引用,并确保拥有:

<script src="{{ asset('js/app.js') }}"></script>
在我的layouts.app文件末尾的

就像一个超级按钮。我希望这对某人有帮助。

答案 2 :(得分:0)

@Qazi:它只是Laravel本身的标准app.blade.php:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">

<!-- CSRF Token -->
<meta name="csrf-token" content="{{ csrf_token() }}">

<title>{{ config('app.name', 'Laravel') }}</title>

<!-- Styles -->
<link href="/css/app.css" rel="stylesheet">

<!-- Scripts -->
<script>
    window.Laravel = <?php echo json_encode([
        'csrfToken' => csrf_token(),
    ]); ?>
</script>
</head>
<body>
<div id="app">
    <nav class="navbar navbar-default navbar-static-top">
        <div class="container">
            <div class="navbar-header">

                <!-- Collapsed Hamburger -->
                <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#app-navbar-collapse">
                    <span class="sr-only">Toggle Navigation</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>

                <!-- Branding Image -->
                <a class="navbar-brand" href="{{ url('/') }}">
                    {{ config('app.name', 'Laravel') }}
                </a>
            </div>

            <div class="collapse navbar-collapse" id="app-navbar-collapse">
                <!-- Left Side Of Navbar -->
                <ul class="nav navbar-nav">
                    &nbsp;
                </ul>

                <!-- Right Side Of Navbar -->
                <ul class="nav navbar-nav navbar-right">
                    <!-- Authentication Links -->
                    @if (Auth::guest())
                        <li><a href="{{ url('/login') }}">Login</a></li>
                        <li><a href="{{ url('/register') }}">Register</a></li>
                    @else
                        <li class="dropdown">
                            <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
                                {{ Auth::user()->name }} <span class="caret"></span>
                            </a>

                            <ul class="dropdown-menu" role="menu">
                                <li>
                                    <a href="{{ url('/logout') }}"
                                        onclick="event.preventDefault();
                                                 document.getElementById('logout-form').submit();">
                                        Logout
                                    </a>

                                    <form id="logout-form" action="{{ url('/logout') }}" method="POST" style="display: none;">
                                        {{ csrf_field() }}
                                    </form>
                                </li>
                            </ul>
                        </li>
                    @endif
                </ul>
            </div>
        </div>
    </nav>

    @include ('layouts.partials._notifications')

    @yield('content')
</div>

<!-- Scripts -->
<script src="/js/app.js"></script>

然后这是我在路线文件夹中的web.php:

<?php

Use Illuminate\Http\Request;

Route::get('/', function (Request $request) {
    return view('home');
});

Auth::routes();

Route::get('/home', 'HomeController@index');
Route::get('/activate/token/{token}', 'Auth\ActivationController@activate')->name('auth.activate');
Route::get('/activate/resend', 'Auth\ActivationController@resend')->name('auth.activate.resend');

现在我注意到的是当我切换页面时,css标记不存在。例如,如果我点击忘记密码&#39;链接,css标记消失了。好像它无法找到css文件夹或者我的本地机器上的路径不正确。

答案 3 :(得分:0)

我遇到了同样的问题并通过简单地删除JQuery和Bootstrap脚本来解决它,因为它们是由app.js加载的(我使用laravel 5.5)。

答案 4 :(得分:0)

对我有用的是删除我从CDN中加载popper.js所添加的脚本。在删除该行之后,下拉列表就会加载。

答案 5 :(得分:-1)

使用这些命令后对我有用

npm安装

npm run dev