Laravel视图共享数据

Posted tata

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel视图共享数据相关的知识,希望对你有一定的参考价值。

Laravel视图共享数据

最近在用lavavel过程中想实现公共头部尾部需要的配置数据在所有的页面中都可以使用,便查看了官方文档,在此做一个总结:

一. 修改 ComposerServiceProvider 服务

  在app/Providers目录下面找到ComposerServiceProvider.php 文件,将其修改成如下面类似:

<?php

namespace AppProviders;

use IlluminateSupportServiceProvider;

class ComposerServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap the application services.
     *
     * @return void
     */
    public function boot()
    {
        view()->composer(
            ‘home.*‘,
            ‘AppHttpViewComposersBaseInfoComposer‘
        );
    }

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

注意:composer的第一个参数是需要公用数据的试图问题,我这边是home下的所有文件,第二个参数是具体要执行的文件。

二 . 处理数据获取并渲染

创建AppHttpViewComposersBaseInfoComposer.php 这个文件,将其修改成如下面类似:

<?php

namespace AppHttpViewComposers;

use IlluminateViewView;
use AppHttpModelsBackendNav;
use AppHttpModelsBackendConfig;

class BaseInfoComposer
{
    /**
     *  将数据绑定到视图。
     *
     * @param  View  $view
     * @return void
     */
    public function compose(View $view)
    {
        $view->with([
            ‘nav‘=>Nav::where(‘is_delete‘,1)->orderBy(‘sort‘,‘desc‘)->get(),
            ‘base‘=>json_decode(Config::where(‘name‘,‘基本配置‘)->value(‘configs‘),true),
            ‘other‘=>json_decode(Config::where(‘name‘,‘其它配置‘)->value(‘configs‘),true),
            ]);
    }
}

三. 注册服务

config/app.php文件下的providers数组中进行注册:

AppProvidersComposerServiceProvider::class,

 

再在页面中就都可以调用了

 

以上是关于Laravel视图共享数据的主要内容,如果未能解决你的问题,请参考以下文章

需要一种有效的方法来避免使用 Laravel 5 重复代码片段

Laravel视图共享数据

Laravel之视图和Blade模板引擎

使用带有分页视图的 Laravel View Composers 共享数据不起作用

如何在片段转换中淡出非共享视图?

Laravel - 在多个独立的代码库之间共享功能