Laravel 5中怎么实现多个视图共享数据

发布时间:2021-07-19 13:55:45 作者:Leah
来源:亿速云 阅读:202

Laravel 5中怎么实现多个视图共享数据,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

1

{{ $cqh }}

现在的要求是每个页面都会用到这个变量,如何共享这个数据呢?

一般这样的操作我会在Laravel服务的boot方法里设置,下面介绍两种共享数据的方法

方法一:使用View:share方法,如CqhServiceProvider里

1

2

3

4

public function boot()

{

    View::share('cqh','chenqionghe');

}

这是使用外观模式,也可以直接使用view()方法,

1

view()->share('cqh', 'chenqionghe');

方法二:使用composer方法单独对这个navigation.blade.php进行传送数据,方法如下

1

2

3

4

5

6

public function boot()

{

    view()->composer('navigation', function ($view) {

        $view->with('cqh','chenqionghe');

    });

}

以上是使用闭包的形式来完成这个操作,其实这和路由一样,也可以用类来代替,Laravel里叫组件,方法如下

1

2

3

4

public function boot()

{

    View::composer('navigation', 'App\Http\ViewComposers\MyViewComposer');

}

上面这样就是注册了视图组件,并且在每次 navigation视图渲染的时候,MyViewComposer@compose 都将会被执行。

下面我们来看这个组件怎么定义

1

2

3

4

5

6

7

8

9

<?php namespace App\Http\ViewComposers;

use Illuminate\Contracts\View\View;

class MyViewComposer

{

    public function compose(View $view)

    {

        $view->with('cqh','chenqionghe');

    }

}

在视图被渲染之前,视图组件的 compose 方法就会被调用,并且传入一个 Illuminate\Contracts\View\View 实例。你可以使用 with 方法来把数据绑定到 view。

注意:方法一和方法二其实是有区别的,方法一是对所有的视图都传递的cqh数据,而方法二只是对navigation视图传递了cqh数据

如果方法二要达到方法一的效果,可以这样

1

2

3

4

View::composer('*', function($view)

{

    //

});

这样就会对所有视图进行传递了

也可以针对多个视图指定MyViewComposer组件

1

View::composer(['navigation', 'footer'], 'App\Http\ViewComposers\MyViewComposer');

也可以使用 composers 方法来同时定义一群视图组件

1

2

3

4

5

View::composers([

    'App\Http\ViewComposers\AdminComposer' => ['admin.index', 'admin.profile'],

    'App\Http\ViewComposers\UserComposer' => 'user',

    'App\Http\ViewComposers\ProductComposer' => 'product'

]);

关于Laravel 5中怎么实现多个视图共享数据问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

推荐阅读:
  1. 如何连接Laravel Debug bar
  2. Laravel如何设置视图合成器

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

laravel 5

上一篇:virbr0虚拟网卡怎么卸载

下一篇:python中的EasyOCR库是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》