Laravel Auth::user()->id 在 livewire 表单上返回 null

Posted

技术标签:

【中文标题】Laravel Auth::user()->id 在 livewire 表单上返回 null【英文标题】:Laravel Auth::user()->id returns null on livewire form 【发布时间】:2021-11-04 03:39:44 【问题描述】:

我尝试将Auth::user()->id 作为我的表单值。它可以显示在标签上,但它返回值 null

查看:

<option value=" Auth::user()->id " data-keterangan=""> Auth::user()->id </option>

Http/Livewire:

        $this->validate([
            'customer_code'=>'required|string',
            'customer_name'=>'required|string',
            'phone_number'=>'required|string'
        ]);

        StokItem::updateOrCreate([
            'customer_code'=>$this->customer_code,
            'customer_name'=>$this->customer_name,
            'phone_number'=>$this->phone_number
        ]);

    

型号:

    protected $fillable = ['id','customer_code','customer_name','phone_number','produk_code','produk_name','produk_uom','qty','kode_kondisi_barang','jenis_kondisi_barang','remark','url_foto','status'];

【问题讨论】:

如果你在浏览器中检查选项,你能看到那个值还是只是“”? 在检查中显示&lt;option value data-keterangan&gt;1&lt;/option&gt; 为什么不在控制器中使用它,为什么要从视图中传递它? 嗯,很奇怪。您可以尝试将结果存储在变量中,然后在需要的地方打印该变量。这也将提高代码的效率。试试这个:在视图中的任何一行,这样做:@php ($user_id = Auth::user()-&gt;id)。然后在你想要的地方打印变量。 $user_id . @EricQvarnström 谢谢,我已经尝试过了,但它对我不起作用:') 【参考方案1】:

确保您的用户已通过身份验证

@auth
  <option value=" Auth::user()->id " data-keterangan=""> Auth::user()->id </option>
@endauth

【讨论】:

谢谢你,我试过了,但它不适合我:')【参考方案2】:

您不能执行auth()-&gt;name(),您需要通过执行auth()-&gt;user() 调用经过身份验证的用户,然后获取您在数据库中的列,例如auth()-&gt;user()-&gt;name

(https://laravel.com/docs/8.x/helpers#method-auth)

在你的Livewire Component,你应该做这样的事情

public $id = '';
public $name = '';     
public $no_hp = '';

public function mount()

   $this->id = auth()->id();         
   $this->name = auth()->user()->name;         
   $this->no_hp = auth()->user()->no_hp;

【讨论】:

我试过这个,但我得到了错误。你能帮助我吗?我的代码:public $id = ''; public $name = ''; public $no_hp = ''; public function mount() $this-&gt;id = auth()-&gt;id(); $this-&gt;name = auth()-&gt;name(); $this-&gt;no_hp = auth()-&gt;no_hp(); 错误:Undefined method 'name' 谢谢你verymush @migsAV,它的工作原理!请注意,不要忘记禁用 public function resetFields() 中的字段,因此当我将其发送到模型时,我的值不会返回 null。 请注意,Livewire 组件永远不应覆盖任何 $id$name$data 属性,因为这些属性在 Livewire 内部使用

以上是关于Laravel Auth::user()->id 在 livewire 表单上返回 null的主要内容,如果未能解决你的问题,请参考以下文章

在 Laravel 4 中使用 Auth::User()->user_group->name 打印用户组名称

Laravel Auth::user()->id 在 livewire 表单上返回 null

Laravel API Passport:从数组中获取 1 个参数:Auth::user()->token()

查看laravel auth / user对象中是否存在某些东西

Laravel:依赖注入身份验证

Laravel 修改 Auth::user() 查询?