在 Laravel 5.4 中跨视图共享
Sharing across view in Laravel 5.4
我有一个项目,其中将用户分配给客户,我想在视图之间共享该信息。
我在 AppServiceProvider 中添加了
use View;
use Auth;
然后修改boot为
if ( Auth::check() )
{
$cid = Auth::user()->client_id;
$company = \App\Clients::first($cid);
view::share('company',$company);
}
但是如果我 dd($company) 我得到
Undefined variable: company
这是因为 Auth
在 AppServiceProvider
中不起作用
所以你的 If 条件 return false
如果您与所有视图共享数据,那么您的代码就像这样,无需检查 Auth。那么它将起作用。
$company = 'Some value';
view::share('company',$company);
dd($company); // for print output.
解决方案 - 对于替代选项,您必须 Helper
class.
当时供应商 boot
是 运行,Auth guard 还没有启动,所以 Auth::check()
returns false,并且 Auth::user()
returns 空。
您可以在中间件中执行 View::share
,或者可能在控制器的构造函数中执行(基本控制器在整个应用程序中共享它,或者如果您需要在某些子集中使用某些特定控制器)路线)。
我有一个项目,其中将用户分配给客户,我想在视图之间共享该信息。
我在 AppServiceProvider 中添加了
use View;
use Auth;
然后修改boot为
if ( Auth::check() )
{
$cid = Auth::user()->client_id;
$company = \App\Clients::first($cid);
view::share('company',$company);
}
但是如果我 dd($company) 我得到
Undefined variable: company
这是因为 Auth
在 AppServiceProvider
所以你的 If 条件 return false
如果您与所有视图共享数据,那么您的代码就像这样,无需检查 Auth。那么它将起作用。
$company = 'Some value';
view::share('company',$company);
dd($company); // for print output.
解决方案 - 对于替代选项,您必须 Helper
class.
当时供应商 boot
是 运行,Auth guard 还没有启动,所以 Auth::check()
returns false,并且 Auth::user()
returns 空。
您可以在中间件中执行 View::share
,或者可能在控制器的构造函数中执行(基本控制器在整个应用程序中共享它,或者如果您需要在某些子集中使用某些特定控制器)路线)。