【问题标题】:notification messages don't hide laravel通知消息不会隐藏 laravel
【发布时间】:2020-08-09 18:49:16
【问题描述】:

我尝试为学习 laravel 创建项目,我创建了消息系统。现在我尝试在有消息时添加通知。它显示了通知,但是当消息打开时,通知不会隐藏它的遗骸。

<?php
namespace App\Helpers; 
use App\PostsMessages;
use Illuminate\Support\Facades\Auth;

class Helper{
    public static function get_unread_message_count()
    {
        $user_id =  Auth::id();
        return PostsMessages::where("to_user_id","$user_id")
        ->whereRaw("(seen_by IS null or seen_by not like '%$user_id%')")->count();
    }
}

<!doctype html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
    <meta charset="utf-8">
    <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>

    <!-- Scripts -->
    <script src="{{ asset('js/app.js') }}" defer></script>

    {{--<script src="{{ asset('js/jquery.js') }}" defer></script>--}}
    <script
        src="https://code.jquery.com/jquery-3.5.1.min.js"
        integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0="
        crossorigin="anonymous"></script>
    <!-- Fonts -->
    <link rel="dns-prefetch" href="//fonts.gstatic.com">
    <link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet">

    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">

    <!--Ad dynamically css and js from controller -->
    <?php if (isset($css_includes)): if (is_array($css_includes)): foreach ($css_includes as $css_include): ?>
    <link href="<?php echo $css_include; ?>" type="text/css" rel="stylesheet"/>
    <?php
    endforeach;
    else:
    ?>
    <link href="<?php echo $css_includes; ?>" rel="stylesheet" media="wait" onload="if(media!='all')media='all'"/>
    <noscript>
        <link rel="stylesheet" href="<?php echo $css_includes; ?>">
    </noscript>
    <?php
    endif;
    endif;

    if (isset($js_includes)): if (is_array($js_includes)): foreach ($js_includes as $js_include):
    ?>
    <script src="<?php echo $js_include; ?>" async defer></script>
    <?php
    endforeach;
    else:
    ?>
    <script src="<?php echo $js_includes; ?>" async defer></script>
    <?php
    endif;
    endif;
    ?>

    <style>
        .tooltip1 {
            position: relative;
            display: inline-block;
            border-bottom: unset;
        }

        .tooltip1 .tooltiptext1 {
            visibility: hidden;
            width: 120px;
            background-color: #555;
            color: #fff;
            text-align: center;
            border-radius: 6px;
            padding: 5px 0;
            position: absolute;
            z-index: 1;
            bottom: 125%;
            left: 50%;
            margin-left: -60px;
            opacity: 0;
            transition: opacity 0.3s;
        }

        .tooltip1 .tooltiptext1::after {
            content: "";
            position: absolute;
            top: 100%;
            left: 50%;
            margin-left: -5px;
            border-width: 5px;
            border-style: solid;
            border-color: #555 transparent transparent transparent;
        }

        .tooltip1:hover .tooltiptext1 {
            visibility: visible;
            opacity: 1;
        }

        @media only screen and (min-width: 768px) {
            ul.xs-only {
                display: none;
            !important;
            }
        }

    </style>
    <script !src="">
        window.Laravel = {!! json_encode([
    'csrfToken' => csrf_token(),
    'url' => url('/')
]) !!};
    </script>

    <!-- Styles -->
    <link href="{{ asset('css/custom.css') }}" rel="stylesheet">
    <link href="{{ asset('css/app.css') }}" rel="stylesheet">

    <meta name="csrf-token" content="{{ csrf_token() }}"/>

    {{-- Toastr CSS --}}
    @toastr_css

    @yield('styles')
</head>
<body>
<div id="app">
    <nav class="navbar navbar-expand-md navbar-light bg-white shadow-sm">
        <div class="container">
            @guest

            @else
                <a class="navbar-brand" href="{{ route('welcome') }}">
                    Accueil
                </a>
                <a class="navbar-brand" href="{{ url('about_us') }}">
                    À propos
                </a>
                <a class="navbar-brand" href="{{ url('contact_us') }}">
                    Contact
                </a>
            @endguest
            <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent"
                    aria-controls="navbarSupportedContent" aria-expanded="false"
                    aria-label="{{ __('Toggle navigation') }}">
                <span class="navbar-toggler-icon"></span>
            </button>

            <div class="collapse navbar-collapse py-3 py-md-0 py-sm-0 py-lg-0" id="navbarSupportedContent">
                <ul class="navbar-nav ml-auto ">
                    @guest
                        <ul class="navbar-nav mr-auto xs-only">
                            <li class="nav-item px-4">
                                <a class="nav-link nav-link-font" href="#">Accueil</a>
                            </li>
                            <li class="nav-item px-4">
                                <a class="nav-link nav-link-font" href="#">À propos</a>
                            </li>
                            <li class="nav-item px-4">
                                <a class="nav-link nav-link-font" href="#">Services</a>
                            </li>
                            <li class="nav-item px-4">
                                <a class="nav-link nav-link-font" href="#">Contact</a>
                            </li>
                            <li class="nav-item px-4">
                                <a class="nav-link nav-link-font" href="#">Informations légales</a>
                            </li>
                            <li class="nav-item px-4">
                                <a class="nav-link nav-link-font" href="#">Langues</a>
                            </li>
                        </ul>


                        <form class="d-flex" id="post-login" method="POST" action="{{ route('login') }}">
                            @csrf
                            <li class="nav-item px-1">
                                <input id="email" type="email" class="form-control @error('email') is-invalid @enderror"
                                       name="email" value="{{ old('email') }}" required autocomplete="email" autofocus>
                                @error('email')
                                <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                @enderror

                                <a href="{{ route('password.request') }}">
                                    Identifiant oublié?
                                </a>

                            </li>
                        <li class="nav-item px-1">
                            <input id="password" type="password"
                                   class="form-control @error('password') is-invalid @enderror" name="password"
                                   required
                                   autocomplete="current-password">
                            @error('password')
                            <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                            @enderror

                            @if (Route::has('password.request'))
                                <a href="{{ route('password.request') }}">
                                    Mot de passe oublié
                                </a>
                            @endif
                        </li>


                        </form>
                        @if (Route::has('register'))
                            <li class="nav-item">
                                <button type="submit" class="btn btn-gold" onclick="event.preventDefault();
                                                     document.getElementById('post-login').submit();">Se connecter</button>
                                <a class="d-block" href="{{ route('register') }}">Crée un compte </a>
                            </li>
                        @endif


                    @else
                        <li class="nav-item dropdown">
                            <button role="button" class="btn btn-gold" id="navbarDropdown" data-toggle="dropdown"
                                    aria-haspopup="true" aria-expanded="false" v-pre> Mon compte
                            </button>

                            <div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">
                                <a class="dropdown-item" href="{{ route('logout') }}"
                                   onclick="event.preventDefault();
                                                     document.getElementById('logout-form').submit();">
                                    {{ __('Logout') }}
                                </a>
                                <a class="dropdown-item" href="{{ route('settings.index') }}">
                                    {{ __('Paramètres') }}
                                </a>
                                <a class="dropdown-item" href="{{ url('posts/my_ads') }}">
                                    {{ __('Mes annonces') }}
                                </a>
                                <a class="dropdown-item notify_dropdown" href="{{ route('messages.index') }}">
                                    {{ __('Ma messagerie') }}
                                    @if(\Helper::get_unread_message_count() > 0)
                                        <span class="badge badge-pill badge-warning unread_noti">
                                          {{ \Helper::get_unread_message_count() }}
                                      </span>
                                    @endif
                                </a>
                                <a class="dropdown-item" href="#">
                                    {{ __("S'abonner") }}
                                </a>
                                <a class="dropdown-item" href="{{ route('home') }}">
                                    {{ __('Les annnonces') }}
                                </a>
                                <a class="dropdown-item" href="{{ route('profile') }}">
                                    {{ __('Mon profile') }}
                                </a>
                                <form id="logout-form" action="{{ route('logout') }}" method="POST"
                                      style="display: none;">
                                    @csrf
                                </form>
                            </div>
                        </li>
                    @endguest
                </ul>
            </div>
        </div>
    </nav>

    <main class="py-4">
        @yield('content')
    </main>
</div>
{{-- Toastr JS --}}
@toastr_js
@toastr_render

@yield('scripts')
</body>
</html>

有人知道我的错误在哪里吗?为什么打开消息时通知不离开。

【问题讨论】:

    标签: laravel


    【解决方案1】:

    一切似乎都很好。我猜你应该在有人打开任何消息时更新页面状态

    我想给你一个小费。您可以定义一个返回未读消息计数的新路由。您可以使用 ajax 请求定期(15 或 30 秒)获取。

    【讨论】:

      猜你喜欢
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 2014-10-24
      • 2016-07-20
      • 2016-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多