将视图作为模型共享变量

时间:2017-09-26 13:59:35

标签: laravel

我有laravel 5.3项目 我试图与所有观点分享.. 所以我试着这个.. 在appserviceproviders 这是启动功能

View::share('path', '/final/public/');
好的,它的工作.. 但我想要做的是与所有视图共享变量,如计数模型记录 我的意思是这样的..

$items = Item::get();
View::share('variable',$items);

但它没有剪切任何东西。 所以我试着把它放在这个班上..

class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
private $itemss;
public function __construct()
{
    $this->middleware(function ($request, $next) {
        $this->itemss = Item::get();
        view()->share('itemss', $this->itemss);
    });

}
}

我收到同样的错误

ErrorException in 4f8648bebb04d05a1427fdfec486dd0221e1b875.php line 235:
Undefined variable: itemss (View: 
E:\AppServ\www\final\resources\views\layouts\adminmaster.blade.php) (View: 
E:\AppServ\www\final\resources\views\layouts\adminmaster.blade.php)

1 个答案:

答案 0 :(得分:1)

您可能需要使用use关键字扩展变量的范围。

public function __construct()
{
    $this->middleware(function ($request, $next) use ($itemss) {
        $this->itemss = Item::get();
        view()->share('itemss', $this->itemss);
    });
}

来自docs:

  

一个闭包封装了它的作用域,这意味着它无法访问它   定义或执行它的范围。但是,它是可能的   从父作用域继承变量(定义闭包的位置)   使用use关键字

进入闭包