【问题标题】:Global variable in Laravel controllers and viewsLaravel 控制器和视图中的全局变量
【发布时间】:2016-01-18 12:45:12
【问题描述】:

我在 Laravel 5.2 中有一个带有身份验证的组中间件, 我想要一个全局变量 $current_user 必须在控制器中直接访问 并在视图中。

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

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

是否可以为经过身份验证的用户创建一个全局变量,最好的选择是什么?

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:

    这很容易做到。您应该有一个控制器,每个其他控制器都可以扩展。

    app/Http/Controllers/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-&gt;currentUser 即可访问已登录的用户。在您的视图中,您可以使用$currentUser 访问已登录的用户。您只需在该文件中执行此操作一次,因为您的所有控制器都应扩展 Controller

    【讨论】:

      猜你喜欢
      • 2014-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-27
      相关资源
      最近更新 更多