Как мне использовать компоненты для отображения моей динамической панели навигации с помощью laravel?

#php #laravel

#php #laravel

Вопрос:

У меня проблема, из-за которой я не могу отобразить панель навигации при отображении содержимого моей страницы. В настоящее время выводом моего кода является неопределенная переменная: navContent (Просмотр: C:UsersComputer AngelDocumentsblogresourcesviewslayoutscomponentsnavbar.blade.php ). Мой желаемый результат — показать мою панель навигации, а затем содержимое моей страницы под ней.

Это мой код для dynamic.blade.php где должны отображаться как панель навигации, так и содержимое страницы.

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

The 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();
        });
  

Это моя миграция navs:

 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

Спасибо, что нашли время прочитать и попытаться мне помочь! 😀

Ответ №1:

Я только что исправил свою проблему, выполнив мои текущие шаги, перечисленные ниже.

  1. Я смотрел https://www.youtube.com/watch?v=THN5Q8JBeDM.
  2. Добавлено «$ navContent = Nav::all (); view()-> share (‘navContent’, $ navContent);» для AppServiceProvider.php в общедоступной функции boot().
  3. Добавьте use App Nav; в AppServiceProvider.php .
  4. Удалите @slot(‘$ navContent’) и @endslot в navbar.blade.php .
  5. Откройте терминал и запустите php artisan serve, он должен работать.

Наконец, наилучшие пожелания, надеюсь, что вы все передадите свой профессиональный опыт и получите высшее образование.