【问题标题】:how to show data of databse in navigation bar on laravel 7如何在 laravel 7 的导航栏中显示数据库的数据
【发布时间】:2020-08-29 00:05:12
【问题描述】:

我是 laravel 的新手。目前我正在使用 laravel 7。我将导航栏作为一个单独的文件,我在所有前端文件上进行了扩展。我只知道当我需要前端数据库中的数据时 那我就喜欢这个

$cat = modelname::all();
        return view('addproducts')->with('cat',$cat);

但是当我必须转到该前端刀片文件时,该代码在这种情况下有效。但在导航栏 senario 上,我不需要转到导航文件,我只需转到另一个刀片文件,导航文件在其上进行扩展。 我只想知道如何从导航栏上的数据库中访问数据

<html>
<head>
    <meta charset="utf-8">

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

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

    <!-- Styles -->
    <link href="{{ asset('css/app.css') }}" rel="stylesheet">
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-light bg-light">
    <a class="navbar-brand" href="#">Navbar</a>
    <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" id="navbarSupportedContent">
        <ul class="navbar-nav mr-auto">
            <li class="nav-item active">
                <a class="nav-link" href="{{'addcategory'}}">Add Catgory <span class="sr-only">(current)</span></a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="{{'showcategory'}}">show Category</a>
            </li>
            <li class="nav-item dropdown">
                <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                    Manage Products
                </a>
                <div class="dropdown-menu" aria-labelledby="navbarDropdown">
                    <a class="dropdown-item" href="{{'
                    addproducts'}}">Add Products</a>
                    <a class="dropdown-item" href="#">Another action</a>
                    <div class="dropdown-divider"></div>
                    <a class="dropdown-item" href="#">Something else here</a>
                </div>
            </li>
            <li class="nav-item">
                <a class="nav-link disabled" href="#">Disabled</a>
            </li>
        </ul>
        <form class="form-inline my-2 my-lg-0">
            <input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">
            <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
        </form>
    </div>
</nav>
@yield('content')
</body>
</html>

这是我的导航文件的代码,我想从数据库中获取数据,然后想在下拉菜单中显示

@extends('layouts.nav');
@section('content')
    //code for the front end of the page
    @endsection

这就是我在另一个页面上扩展导航文件的方式

【问题讨论】:

    标签: php laravel navbar


    【解决方案1】:

    @Fahad Munir 在你的情况下会这样吗?使用“包含”而不是“扩展”?

    @include('layouts.nav', ['cat' => $cat = App\modelname::all();])
    

    如果这对您的目的不起作用,您也可以考虑使用 View Composer。

    在此处查看有关 View Composers 的 Laravel 文档:https://laravel.com/docs/7.x/views#view-composers

    使用 View Composer 将允许您在 appServiceProvider 中的 boot() 方法中添加类似以下内容,或者在使用 artisan 创建新的服务提供者并在这样做之后添加到 boot() 方法之后:

    view()->composer('layouts.nav', function($view) {
       $view->with('cat', App\modelname::all());
    });
    
    

    如果需要,请在此处阅读 Laravel 文档中的更多相关信息: https://laravel.com/docs/7.x/providers#the-boot-method

    【讨论】:

    • 作曲家才是王道
    【解决方案2】:

    如果你在 Laravel 7 上,那么你真的需要使用 Laravel 7 中添加的新组件功能,运行php artisan make:component NavigationComponent,这将生成一个 NavigationComponent 类和一个导航组件刀片文件。

    导航组件.blade.php

    <nav class="navbar navbar-expand-lg navbar-light bg-light">
        <a class="navbar-brand" href="#">Navbar</a>
        <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" id="navbarSupportedContent">
            <ul class="navbar-nav mr-auto">
                <li class="nav-item active">
                    <a class="nav-link" href="{{'addcategory'}}">Add Catgory <span class="sr-only">(current)</span></a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="{{'showcategory'}}">show Category</a>
                </li>
                <li class="nav-item dropdown">
                    <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                        Manage Products
                    </a>
                    <div class="dropdown-menu" aria-labelledby="navbarDropdown">
                        <a class="dropdown-item" href="{{'
                        addproducts'}}">Add Products</a>
                        <a class="dropdown-item" href="#">Another action</a>
                        <div class="dropdown-divider"></div>
                        <a class="dropdown-item" href="#">Something else here</a>
                    </div>
                </li>
                <li class="nav-item">
                    <a class="nav-link disabled" href="#">Disabled</a>
                </li>
            </ul>
            <form class="form-inline my-2 my-lg-0">
                <input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">
                <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
            </form>
        </div>
    </nav>
    

    导航组件.php

    <?php
    
    namespace App\View\Components;
    
    use Illuminate\View\Component;
    
    class NavigationComponent extends Component
    {
        public $cat;
    
        /**
         * Create a new component instance.
         *
         * @return void
         */
        public function __construct()
        {
            $this->cat = CatModel::all();
        }
    
        /**
         * Get the view / contents that represent the component.
         *
         * @return \Illuminate\View\View|string
         */
        public function render()
        {
            return view('components.navigation-component');
        }
    }
    
    

    更多信息请访问Laravel Component docs

    【讨论】:

    • 你不需要需要使用它...你可能会使用它,但你不需要需要使用它跨度>
    • 这只是我的看法,我相信它肯定比将视图代码与业务逻辑混合更好:@include('layouts.nav', ['cat' =&gt; $cat = App\modelname::all();])
    • @tsommie 这只是我提到的选项之一。不过,你得到了不错的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    • 2023-03-13
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多