【问题标题】:I want to share Auth::user () using View::share我想使用 View::share 共享 Auth::user ()
【发布时间】:2019-07-13 17:37:30
【问题描述】:

这是我写的资料。

app\Providers\AppServiceProvider.php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\View;
use Illuminate\Support\Facades\Auth;

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        View::share('user_id', Auth::user()->user_id);
    }
}

出现以下错误:

“试图获取非对象的属性'user_id'”

当我在其他地方使用Auth::user()->user_id 时,它显示正确。但不是在这里。是什么原因?

【问题讨论】:

  • 你可以使用 Auth::id(),也许它在旧版本的 laravel 上可以正常工作

标签: laravel


【解决方案1】:

我通过下面的链接找到了原因。

Laravel - How to get current user in AppServiceProvider

我修改了源代码如下,它工作了。

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\View;
use Illuminate\Support\Facades\Auth;

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        view()->composer('*', function ($view)
        {
            View::share('user_id', Auth::user()->user_id);
        }
    }
}

【讨论】:

    【解决方案2】:

    您的用户表是否有名为“user_id”的列,或者您的意思是用户表的“id”列?如果您的意思是用户表 id 列,请将您的代码更新到下面。

    namespace App\Providers;
    use Illuminate\Support\ServiceProvider;
    use Illuminate\Support\Facades\View;
    use Illuminate\Support\Facades\Auth;
    
    class AppServiceProvider extends ServiceProvider
    {
        public function boot()
        {
            View::share('user_id', Auth::user()->id);
        }
    }
    

    【讨论】:

    • 'user_id' 是我新创建的专栏。此外,如果我使用Auth::user()->id,我会收到“尝试获取非对象的属性'id'”的错误。
    • 检查您是否正在获取 Auth 对象尝试此代码在类开始之前添加“使用 Auth”并在 boot() 内部写入 dd(Auth::User());检查是否返回。
    • 我试过dd(Auth::User ());。结果为“空”。但是,某些模型页面输出正确。
    猜你喜欢
    • 2015-05-07
    • 1970-01-01
    • 1970-01-01
    • 2020-06-03
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2022-01-07
    • 1970-01-01
    相关资源
    最近更新 更多