Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取错误“;在初始化之前,不能访问类型化属性";-拉维活电线 描述_Php_Laravel_Laravel 8_Laravel Livewire - Fatal编程技术网

Php 获取错误“;在初始化之前,不能访问类型化属性";-拉维活电线 描述

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

我正在键入提示模型属性并尝试删除邀请数据。下面是它让我回想起的错误。请帮助我,因为我无法发现我遗漏了什么

类型化属性App\Http\Livewire\Backend\UserManagement\FormComponent\InvitationManagementModal::$invitation在初始化之前不得访问

精简、复制可复制的代码段
  • 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