在 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 

这是因为 AuthAppServiceProvider

中不起作用

所以你的 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,或者可能在控制器的构造函数中执行(基本控制器在整个应用程序中共享它,或者如果您需要在某些子集中使用某些特定控制器)路线)。