通常我们使用Laravel开发项目,一般情况下都会把公共区域分离,比如我的博客网站的侧边栏:
肯定会把这个作为单独的一个文件,来保存使用。
但里面的数据我们不能在每个控制器都去获取一次,然后再分配出去。
所以这里我们就共享视图的变量。
在服务提供者的boot
方法内,我们把所有需要的数据先获取到,然后利用view()
分配。
示例代码如下:
public function boot()
{
$common_data = self::getIndexCommonData();
view()->share('common_data', $common_data);
}
$common_data就是我要分配给侧边栏的变量,通过view()->share();就可以分配出去了。 然后在每个页面的侧边栏都可以获取到这些数据库。
所以有几个注意点:
1.你可以在默认的app/Providers/AppServiceProvider.php
提供者里面分配变量,但是我更推荐创建一个单独的服务提供者来分配。因为根据类的单一职责原则,一个类的功能越明确,越单一越好。
比如:
php artisan make:provider View/ViewServiceProvider
但是别忘了,自己创建的服务提供者需要在config/app.php
里面注册。
2.提供的变量名尽量特殊一点,不然有某一天万一你就忘了这个变量名是在侧边栏的"全局"变量里面,被覆盖了怎么办?【PS:此处我是猜的,没测试过。但特殊点总归是好的,也不影响什么。】