【问题标题】:Laravel 5.1 - Variable in main blade layoutLaravel 5.1 - 主刀片布局可变
【发布时间】:2015-10-02 19:25:56
【问题描述】:

我正在使用 Laravel 5.1。而且我的布局视图中的变量有问题。

在我的布局视图中,我使用一个变量在我的DashboardController 上显示一个像这样的活动登录用户:

...
class DashboardController extends Controller {

        public function index(Request $request) {
            //
            $title = "Dashboard";
            $userActive = $request->user();
            return view('dashboard.index', compact('title', 'userActive'));
        }
...

$userActive 用于显示谁在登录。我的问题是如果我使用另一个函数或另一个 Contoller,我需要像上面那样编写这个($userActive)代码。

如何通过只写一次来让它变得简单?

【问题讨论】:

  • 请求必须发送到一个url,不能发送给每个人,因为每个get Route也必须是post route。

标签: variables laravel global-variables blade laravel-5.1


【解决方案1】:

是的,您可以访问刀片内部的 Auth 类。试试看:

{{ Auth::user()->name }}

如果您使用 Sentry:

{{ Sentry::getUser()->name }}

【讨论】:

    【解决方案2】:

    您可以访问刀片模板中的 Auth 类来访问当前登录的用户:

    {{ Auth::user()->name }}
    

    您也可以尝试使用视图编辑器:http://laravel.com/docs/5.0/views#view-composers

    【讨论】:

      【解决方案3】:

      另一种方法是使用 share() 方法。例如,您可以在 AppServiceProvider 中添加以下代码:

      view()->share('currentUser', Auth::user());
      

      这样,在任何视图中,您都可以通过 $currentUser 变量访问已登录的用户。 文档:http://laravel.com/docs/5.1/views#sharing-data-with-all-views

      【讨论】:

        【解决方案4】:

        我在这种情况下的做法:

        创建一个views/includes/menu.blade.php 文件并将其包含在app.blade.php 文件中:

        @include('includes.menu')
        

        而不是调用{{ Auth::user()->name }},您总是需要使用菜单,在 menu.blade.php 上按照建议在菜单文件中放置以下{{ Auth::user()->name }}

        【讨论】:

          猜你喜欢
          • 2013-02-25
          • 2022-11-11
          • 2017-01-27
          • 2017-02-24
          • 2014-10-30
          • 2016-10-23
          • 2023-04-08
          • 2015-11-08
          • 2014-08-14
          相关资源
          最近更新 更多