【问题标题】:How do I use components to display my dynamic navigation bar using laravel?如何使用组件来使用 laravel 显示我的动态导航栏?
【发布时间】:2020-09-14 19:59:55
【问题描述】:

我在显示页面内容时遇到了无法显示导航栏的问题。目前我的代码的输出是,未定义的变量:navContent(视图:C:\Users\Computer Angel\Documents\blog\resources\views\layouts\components\navbar.blade.php)。我想要的输出是显示我的导航栏,然后是它下面的页面内容。

这是我的 dynamic.blade.php 代码,导航栏和页面内容都应该在其中显示。

<!DOCTYPE html>
<html>
    <head>
    </head>
    @component('layouts.components.navbar')
    @endcomponent
    <body>
        {!!$pageContent->pageContent!!}
    </body>
</html>

navbar.blade.php 也是我的组件,如下所示:

<nav>
    @slot('$navContent')
    @foreach($navContent as $nav)
    <a href="{!!$nav->navLink!!}">{!!nav-navName!!}</a>
    @endforeach
    @endslot        
</nav>

这是我的 PageController@show:

public function show($URI)
    {
        $pageContent = DB::table('pages')->where('URI',$URI)->first();
        return view('page.dynamic', ['pageContent' => $pageContent]);
    }

这是我的 Nav.php

protected $fillable = ['navName', 'navLink'];

这是我的 Page.php

protected $fillable = ['title', 'URI', 'pageContent'];

这是我的页面迁移:

Schema::create('pages', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->string('URI');
            $table->text('pageContent');
            $table->timestamps();
        });

这是我的导航迁移:

Schema::create('navs', function (Blueprint $table) {
            $table->id();
            $table->string('navName');
            $table->string('navLink');
            $table->timestamps();
        });

这是我的 web.php:

Route::get('/page/{URI}', 'PageController@show');

对于我的完整代码,请使用下面的 GitHub 存储库链接:

https://github.com/xiaoheixi/blog

感谢您花时间阅读并尝试帮助我! :D

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    我刚刚通过执行下面列出的当前步骤解决了我的问题。

    1. 我看了https://www.youtube.com/watch?v=THN5Q8JBeDM
    2. 添加了“$navContent = Nav::all(); view()->share('navContent', $navContent);" 到 boot() 公共函数中的 AppServiceProvider.php。
    3. 添加使用App\Nav;进入 AppServiceProvider.php。
    4. 删除 navbar.blade.php 中的 @slot('$navContent') 和 @endslot。
    5. 打开终端并运行 php artisan serve,它应该可以工作了。

    最后祝愿你们都通过专业经验并毕业。

    【讨论】:

      猜你喜欢
      • 2020-07-22
      • 2021-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-15
      • 2017-08-23
      • 2019-08-10
      • 2011-03-22
      相关资源
      最近更新 更多