分享动态渲染category的方法

背景

希望直接在数据库里添加category数据,页面上可以动态渲染出来对应的分类。
这个也是我第二次学习课程的目的,希望可以自己优化一下,哪怕一点点。

思路

需要先了解与所有视图共享数据的知识。

大致的意思就是在应用提供者app\Providers\AppServiceProvider.php里面的boot方法里面调用视图 Facade 的 share 方法

<?php

namespace App\Providers;

use Illuminate\Support\Facades\View;

class AppServiceProvider extends ServiceProvider
{
    ...
    public function boot()
    {
        .
        .
        View::share('categories',Category::all());
        .
        .
    }
    ...
}

这样我还不确定是否可以在视图中获取这个数据,我就在resources\views\layouts\_header.blade.php中的Larabbs 旁边写了如下代码

.
.
<a  class="navbar-brand "  href="{{  url('/') }}">
      LaraBBS {{ $categories->find(1)}}
 </a>
.
.

这样一来,如果我上述方法是可行的话,那么在视图里面应该是可以打印出来第一个category的对象。尝试一波之后,果然是ok的。截图如下

分享动态渲染category的方法

这样一来我就可以通过模板中的循环来输出categoryname属性了。手册中关于循环的介绍。下面是部分代码和截图

<div class="collapse navbar-collapse" id="navbarSupportedContent">
      <!-- Left Side Of Navbar -->
      <ul class="navbar-nav mr-auto">
        <li class="nav-item @if (request()->url() == route('topics.index' )) active
          @endif"><a class="nav-link" href="{{ route('topics.index') }}">话题</a></li>

        @foreach ($categories as $category)
        {{$category->name}}
        @endforeach

      </ul>

分享动态渲染category的方法

接下来就是让他可点击并选中之后处于active的状态。这里参照的是李小明的这篇讨论说个简单易懂不需要任何扩展直接使用的方法自动 url 选择循环的介绍
简单易懂不需要任何扩展直接使用的方法自动 url 选择

<li class="nav-item @if (request()->url() == route('categories.show', 4 )) active
@endif"><a class="nav-link" href="{{ route('categories.show', 4) }}">公告</a></li>

最后的修改结果如下

   <!-- Left Side Of Navbar -->
      <ul class="navbar-nav mr-auto">
        <li class="nav-item "><a class="nav-link @if (request()->url() == route('topics.index' )) active @endif" href="{{ route('topics.index') }}">话题</a></li>
        @foreach ($categories as $category)
        <li class="nav-item ">
          <a class="nav-link @if (request()->url() == route('categories.show', $category->id )) active @endif" href="{{ route('categories.show', $category->id ) }}">{{$category->name}}</a>
        </li>
        @endforeach

      </ul>
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!