我有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)
答案 0 :(得分:1)
您可能需要使用use
关键字扩展变量的范围。
public function __construct()
{
$this->middleware(function ($request, $next) use ($itemss) {
$this->itemss = Item::get();
view()->share('itemss', $this->itemss);
});
}
来自docs:
一个闭包封装了它的作用域,这意味着它无法访问它 定义或执行它的范围。但是,它是可能的 从父作用域继承变量(定义闭包的位置) 使用use关键字
进入闭包