Laravel控制器和视图中的全局变量

时间:2016-01-18 12:45:12

标签: php laravel laravel-5

我在Laravel 5.2中有一个带有auth的组中间件, 我想要一个全局变量 $ current_user 必须可以在控制器中直接访问 并在意见中。

我不想每次都在控制器方法中这样做:

$current_user   = Auth::user();
return view('account.view', ['current_user', $current_user]);

是否可以为经过身份验证的用户创建全局变量,这样做的最佳选择是什么?

1 个答案:

答案 0 :(得分:3)

这可以很容易地完成。你应该有一个控制器,每个其他控制器扩展。

应用/ HTTP /控制器/ Controller.php这样。

<?php

namespace App\Http\Controllers;

abstract class Controller
{
    use DispatchesJobs, ValidatesRequests;

    protected $currentUser;

    public function __construct()
    {
        // Grab the logged in user if any and set it to this property.
        // All extending classes should then have access to it.
        $this->currentUser = \Auth::user();

        // Share this property with all the views in your application.
        view()->share('currentUser', $this->currentUser);
    }
}

在您的控制器中,您只需使用$this->currentUser即可访问已登录的用户。在您的视图中,您只需使用$currentUser即可访问登录用户。您只需要在该文件中执行一次,因为所有控制器都应该扩展Controller