美文网首页
Laravel视图组件共享数据

Laravel视图组件共享数据

作者: 老王谈编程 | 来源:发表于2017-11-23 12:17 被阅读0次

做项目时会共享一些数据,比如布局文件中layouts/_sidebar.blade.php的菜单数据在每个页面都会显示,那么在laravel中就可以使用视图组件

  • 创建视图服务提供器
$ php artisan make:provider ComposerServiceProvider
  • 编写服务提供器
<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class ComposerServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap the application services.
     *
     * @return void
     */
    public function boot()
    {
        // 需要绑定数据的模板文件
        view()->composer('layouts._sidebar', 'App\Http\ViewComposers\MenuComposer');
    }

    /**
     * Register the application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

  • 创建app/Http/ViewComposer/MenuComposer.php
<?php

namespace App\Http\ViewComposers;

use Illuminate\Contracts\View\View;

class MenuComposer
{
    protected $menus;

    public function __construct()
    {
        $this->menus = [
            route('students.index') => '学生列表',
            route('students.create') => '新增学生',
        ];
    }

    // 将数据渲染到视图中
    public function compose(View $view)
    {
        // 渲染数据
        $view->with('menus', $this->menus);
    }
}
  • 注册提供器:config/app.php
'providers' => [
        /*
         * Application Service Providers...
         */
        App\Providers\ComposerServiceProvider::class,
],
  • 视图文件中读取:resource/views/layouts/_header.blade.php
<div class="col-md-3">
    <div class="list-group">
        @if(isset($menus) && count($menus) > 0)
            @foreach($menus as $key=>$menu)
                <a href="{{ $key }}" class="list-group-item @if(\Request::url() === $key) active @endif">{{ $menu }}</a>
            @endforeach
        @endif
    </div>
</div>
  • 收拾工具,回家吃饭

相关文章

  • Laravel视图组件共享数据

    做项目时会共享一些数据,比如布局文件中layouts/_sidebar.blade.php的菜单数据在每个页面都会...

  • Laravel view视图共享数据

    原文链接:https://www.whongbin.cn/article-detail/151.html[http...

  • laravel 视图组件

    视图组件建立完成之后,可以在组件内部写公共的组件可用变量,方便多个地方使用 如果想把数据共享给所有视图,只要在服务...

  • 组件化和React

    组件化 组件的封装 视图 数据 变化逻辑(数据驱动视图变化) 组件的复用 props传递数据 复用 JSX的本质 ...

  • php菜鸟笔记,laravel 入门教程

    安装 Laravel: 配置 Laravel: 配置路由: 视图传值: Blade模板: Model操作: 数据库:

  • Vue中的组件数据共享问题和非父子组件的通讯

    一.组件数据共享问题 一.父组件向子组件共享数据 props 1.1 父组件向子组件共享数据 1.2 定义一个父组...

  • Vue现代化使用方法(四)--Vuex

    在组件内可以通过data属性共享数据,父子组件也可以通过props进行数据共享,但如果是兄弟跨组件之间的数据共享,...

  • SwiftUI之EnvironmentObject

    如何使用@EnvironmentObject在视图之间共享数据 对于应该与整个应用程序中的所有视图共享的数据,Sw...

  • Laravel 视图

    第四章 Laravel 视图 视图定义 视图标签 blade模板布局 数据处理 加载静态资源 4.1 创建视...

  • vue原理

    组件化 数据驱动视图传统组件,只是静态的渲染,更行还是依赖于操作DOM数据驱动视图--Vue(MVVM)数据驱动视...

网友评论

      本文标题:Laravel视图组件共享数据

      本文链接:https://www.haomeiwen.com/subject/xizavxtx.html