我正在使用Laravel 5.2版本,我试图在所有视图之间共享数据,但由于某种原因我无法让它工作。在我的Controller.php
__construct function
我设置了这样的内容,但这不起作用:
<?php
namespace App\Http\Controllers;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesResources;
class Controller extends BaseController
{
use AuthorizesRequests, AuthorizesResources, DispatchesJobs, ValidatesRequests;
public function __construct()
{
view()->share('user', Auth::user());
}
}
我试图在我的导航部分中呈现这样:
<li>{{ $user->name }}</li>
答案 0 :(得分:2)
您应该为此创建service provider或使用view composers。
此外,您不需要为Auth::user()
或auth()->user()
创建单独的变量,因为您已经可以在开箱即用的所有视图中使用这些变量。
答案 1 :(得分:1)
编辑2:出于安全原因您无法在Controller.php中获取Auth,但您可以从Controller创建范围的CustomController.php,而其他控制器必须从CustomController扩展,在自定义中控制器,您可以使用Auth,并与所有视图共享$ user。
尝试这种方式,不要忘记使用Auth;
View::share('user', Auth::user());
代替你的
view()->share('user', Auth::user());
可以帮助你的Article
编辑:我在我的Laravel 5应用程序中尝试过它只需输入
\View::share('user', Auth::user());
就是这样。