【问题标题】:make $user is undefined Make the variable optional in the blade template. Replace {{ $user }} with {{ $user ?? '' }}make $user 未定义 使变量在刀片模板中成为可选。将 {{ $user }} 替换为 {{ $user ?? '' }}
【发布时间】:2020-04-11 22:42:46
【问题描述】:

我有一页 sidebar.blade.php,我必须将此页面作为侧边栏导入另一个页面 当我使用@extends 将侧边栏导入其他页面时,这里有来自控制器的变量,它显示错误未定义变量和解决方案

" make $user is undefined 使变量在刀片模板中成为可选。将 {{ $user }} 替换为 {{ $user ?? '' }}"

我该如何解决这个问题

这里是侧边栏代码

@if($user->role  =="handlers" )  
            <li>
                <a href="{{ url('/kontaktuppgifter') }}"><i class="fa fa-user fa-fw"></i> kontaktuppgifter{{-- <span class="fa arrow"></span> --}}</a>

            </li>
            @endif
            <li>

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    如果 $user 是当前用户,那么您应该为此使用 Auth:

    @if(auth()->user()->role  =="handlers" )  
                <li>
                    <a href="{{ url('/kontaktuppgifter') }}"><i class="fa fa-user fa-fw"></i> kontaktuppgifter{{-- <span class="fa arrow"></span> --}}</a>
    
                </li>
    @endif
    

    【讨论】:

    • 这个变量数据不是来自 auth。我完全希望在每个视图页面中都可以使用一个变量
    • 我得到了这个 Facade\Ignition\Exceptions\ViewException 未定义属性:Illuminate\Auth\AuthManager::$user(查看:/Applications/XAMPP/xamppfiles/htdocs/EASI/resources/views/layout/ sidebar.blade.php)
    • 我得到了这个 {{ Auth::user()->name }}
    【解决方案2】:

    由于您可能没有将变量 $user 传递给您的每个视图,但是您正在扩展侧边栏视图,请尝试使用 Laravel auth() 帮助器来获取用户模型。你可以这样做:

    @if(auth()->user()->role  == "handlers")  
        <li>
            <a href="{{ url('/kontaktuppgifter') }}">
                <i class="fa fa-user fa-fw"></i>
                kontaktuppgifter
            </a>
        </li>
    @endif
    

    您还可以与所有视图共享一个 $user 变量,这样您就不必每次要检索用户数据时都查询数据库。

    您可以在 BaseController 类 __construct() 函数中执行此操作:

    //App\Http\Controller.php
    
    public function __construct()
    {
        $user = auth()->user();
    
        view()->share('user', $user);
    }
    

    然后你可以在你的视图中使用一个用户变量,就像你现在正在做的那样:

    @if($user->role  == "handlers")  
        <li>
            <a href="{{ url('/kontaktuppgifter') }}">
                <i class="fa fa-user fa-fw"></i>
                kontaktuppgifter
            </a>
        </li>
    @endif
    

    【讨论】:

    • 嗨,感谢您的帮助,是的,我提到了在我可以使用 auth 执行的每个视图中 $user 不可用的确切问题,但在这个变量数据中不是来自 auth。我完全希望在每个视图页面中都可以使用一个变量
    • 我更新了我的答案,这样您就可以与您的所有视图共享任何数据,这些数据是从您的任何控制器内部返回的。
    • 对于第一个解决方案,我得到了这个 Facade\Ignition\Exceptions\ViewException 未定义属性:Illuminate\Auth\AuthManager::$user(查看:/Applications/XAMPP/xamppfiles/htdocs/EASI/resources/视图/布局/sidebar.blade.php)
    • 我通过这个 {{ Auth::user()->name }} 得到了解决方案
    猜你喜欢
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-20
    • 2020-10-18
    • 2017-12-18
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多