在AppServiceProvider Laravel 5.3中创建全局变量

时间:2016-11-23 07:21:57

标签: php laravel laravel-5

您好我已经在Laracasts上发布了这个,但到目前为止还没有答案,所以我想在这里尝试:)

我正在尝试使用AppServiceProvider为视图获取几个全局变量。我没有遇到问题,如果我使用Laravel的一个外观来获取用户详细信息,但是依赖注入,我无法解决这个问题。

这是我目前的代码:

<?php namespace App\Providers;

use Illuminate\Support\ServiceProvider;

use App\Repositories\ShopCategory\ShopCategoryInterface;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot(ShopCategoryInterface $shop_category)
    {
        $parent_categories = $shop_category->getParentCategories();

        view()->composer('*', function($view){
            $view->with('parent_categories', $shop_category->getParentCategories());
    });
}

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

    }
}

我原以为这会起作用,但我收到了错误:

Undefined variable: shop_category

所以我只是想知道如何将$ shop_category类传递给视图编辑器。

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

你需要use()函数进入函数

中传递var的闭包

试试这个:

    view()->composer('*', function($view) use($shop_category) {
        $view->with('parent_categories', $shop_category->getParentCategories());
    });

答案 1 :(得分:0)

启动功能应该是

 public function boot()
    {
        view()->composer('*', function($view){
        $shop_category = new ShopCategoryInterface()
        $parent_categories = $shop_category->getParentCategories();
        $view->with('parent_categories', $shop_category->getParentCategories());
    });