Php 获取错误“;在初始化之前,不能访问类型化属性";-拉维活电线 描述
我正在键入提示模型属性并尝试删除邀请数据。下面是它让我回想起的错误。请帮助我,因为我无法发现我遗漏了什么 类型化属性App\Http\Livewire\Backend\UserManagement\FormComponent\InvitationManagementModal::$invitation在初始化之前不得访问 精简、复制可复制的代码段Php 获取错误“;在初始化之前,不能访问类型化属性";-拉维活电线 描述,php,laravel,laravel-8,laravel-livewire,Php,Laravel,Laravel 8,Laravel Livewire,我正在键入提示模型属性并尝试删除邀请数据。下面是它让我回想起的错误。请帮助我,因为我无法发现我遗漏了什么 类型化属性App\Http\Livewire\Backend\UserManagement\FormComponent\InvitationManagementModal::$invitation在初始化之前不得访问 精简、复制可复制的代码段 Livewire\InvitationManagementModal.php 试试这个: public function deleteInvita
- Livewire\InvitationManagementModal.php
试试这个:
public function deleteInvitation(Invitation $invitation)
{
$this->invitation = $invitation;
$this->invitation->delete();
}
public function deleteInvitation(Invitation $invitation)
{
if($invitation){
$invitation->delete();
}
}
试试这个:
public function deleteInvitation(Invitation $invitation)
{
$this->invitation = $invitation;
$this->invitation->delete();
}
public function deleteInvitation(Invitation $invitation)
{
if($invitation){
$invitation->delete();
}
}
这里的其他答案都有一些小问题需要注意。您不必检查$invitation
,因为类型提示invitation
使Laravel使用模型路由绑定,该绑定获取相应的记录,或者在未找到时抛出HTTP 404状态代码
其次,这是您当前看到的实际错误,即您不必对$this->invitation
执行任何操作,因为它未设置。您应该将一个参数传递给该方法
在Livewire中循环数据时,建议始终使用wire:key
,以便Livewire可以跟踪循环中的每条记录
因此,对于实际的delete方法,只需对输入变量调用delete方法
公共功能删除邀请(邀请$Invitation)
{
$invitation->delete();
//发出事件以通知用户记录已删除
//刷新父组件以从列表中删除邀请
}
对于您的刀片,将wire:key
添加到循环中的第一个元素,并将ID传递给该方法。
(因此wire:click=“deleteInvitation({{{$invitation->id}}})”
而不是wire:click=“deleteInvitation”
)
如果$invitation变量变为null,它也会抛出一个错误。使用模型路由绑定,您要么在找不到时得到404,要么返回实际模型。所以不,你不必检查它。我已经试过了,它不起作用。你还需要传递该方法的主键,以便模型路由绑定工作。这是一个完美的方法,正如预期的那样工作,非常感谢!
@forelse($invitations as $key => $invitation)
<li class="flex flex-row" wire:key="invitation_{{ $invitation->id }}">
<div class="flex flex-1 items-center px-8 py-4">
<div class="flex-1 mr-16">
<div class="text-sm dark:text-white">
{{ $invitation->email }}
</div>
</div>
<button wire:click="deleteInvitation({{ $invitation->id }})" class="text-right flex justify-end">
<x-icon.trash />
</button>
</div>
</li>
@empty
@endforelse