auth()->user()->email / Auth::user()->email 在 x 组件中不起作用
Posted
技术标签:
【中文标题】auth()->user()->email / Auth::user()->email 在 x 组件中不起作用【英文标题】: auth()->user()->email / Auth::user()->email not working in x-component auth()->user()->email / Auth::user()->email 在 x 组件中不起作用 【发布时间】:2021-11-28 00:37:48 【问题描述】:php artisan make:component Navbar
,已创建:
App\View\Components\Navbar.php
app\resources\views\components\navbar.blade.php
将 auth()->user()->email
或 Auth::user()->email
放在刀片文件中,出现此错误:
Trying to get property 'email' of non-object
。
尝试通过将我的App\View\Components\Navbar.php
更改为:
<?php
namespace App\View\Components;
use Illuminate\View\Component;
class Navbar extends Component
public $email;
/**
* Create a new component instance.
*
* @return void
*/
public function __construct($email = null)
$this->email = 'info@example.com';
/**
* Get the view / contents that represent the component.
*
* @return \Illuminate\Contracts\View\View|\Closure|string
*/
public function render()
return view('components.navbar');
并将 $email
添加到我的刀片文件中,它工作正常。
但是,我想显示来自经过身份验证的用户的电子邮件地址,所以我将App\View\Components\Navbar.php
更改为:
<?php
namespace App\View\Components;
use Illuminate\View\Component;
use Illuminate\Support\Facades\Auth;
class Navbar extends Component
public $email;
/**
* Create a new component instance.
*
* @return void
*/
public function __construct($email = null)
$this->email = Auth::user()->email;
/**
* Get the view / contents that represent the component.
*
* @return \Illuminate\Contracts\View\View|\Closure|string
*/
public function render()
return view('components.navbar');
我又遇到了同样的错误。
【问题讨论】:
【参考方案1】:您遇到的错误是因为用户未通过身份验证。也许在调用刀片文件中的组件之前添加一个检查,将组件包装在 @auth 指令之间。像这样的
@auth
<x-navbar></x-navbar>
@endauth
【讨论】:
以上是关于auth()->user()->email / Auth::user()->email 在 x 组件中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 使用 auth()->user() 作为 api
Laravel Socialite 回调 auth('customer')->user() 为 null
Laravel Auth::user()->id 在 livewire 表单上返回 null
无法分配“<class 'django.contrib.auth.models.User'>”:“Model.user”必须是“User”实例