分享动态渲染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
的name
属性了。手册中关于循环的介绍。下面是部分代码和截图
<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>
接下来就是让他可点击并选中之后处于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>
推荐文章: