删除记录后未找到Livewire分页返回404



在调用delete((方法后,当试图转到表的另一页时,我得到一个404未找到错误。

这是我的删除方法:

public $selected = [];
 public function deleteSelected()
    {
        $products = Products::whereKey($this->selected);
        $products->delete();
        $this->showDeleteModal = false;
        $this->selected = [];
    }

我尝试了以下

  • 为了改变我在组件视图中调用分页的方式,我尝试了{{ $products->withQueryString()->links() }}而不是{{ $products->links() }}
  • 我尝试在configlivewire.php中将'asset_url'null更改为http://localhost
  • 我试过php artisan route:clearphp artisan route:cache

以上似乎都不能解决问题,所以我最终来到这里,希望你们中的一些人遇到了同样的问题并设法解决了它。

谢谢。

/**更新**/

我刚刚在一个新的Laravel项目上重建了数据表,我也有同样的错误。

如果有人感兴趣,我用代码做了一个github回购:https://github.com/mvpopuk/livewire-datatable

你好像在看直播,我也一直在看。最有可能的是,你在创建记录后就删除了它;编辑";Livewire组件中的属性仍然指示一个已删除的模型,该模型会对每个下一个请求产生404响应。

您应该重置";编辑";属性添加到删除操作后的新模型。

public function deleteSelected()
{
    $products = Products::whereKey($this->selected);
    $products->delete();
    $this->showDeleteModal = false;
    $this->selected = [];
    $this->editing = Products:make(); // or new Product()
}

有趣的是,Caleb Porzio也错过了这一点,他的演示项目也有这个小错误。

我在删除刚才创建的用户记录(以模态(时也遇到了同样的问题。

然后我编辑了记录,使用用户数据,如:

$user = User::findOrFail($id);
$this->user = $user; // assigning the public property for edit modal (in Livewire memory now)

然后,当我立即尝试删除它时,我得到了404问题。为了解决这个问题,我使用了以下链接中的解决方案:基本上,我必须将相应的Model记录设置为null,它仍然存在于Livewire内存中(在最后一步的编辑过程中(。

$user_id = User::findOrFail($id);
$user_id->delete();
$this->user = null; // Important

为了用另一种方式解决这个问题,我们也可以选择软删除。。只需将数据库中的用户记录状态列更新为0,即可使模型记录存在于Livewire内存中。

最新更新