删除记录后 Livewire 分页返回 404 未找到
Livewire pagination returning 404 not found after deleting a record
调用 delete() 方法后,尝试转到 table 的另一页时,出现 404 未找到错误。
这是我的删除方法:
public $selected = [];
public function deleteSelected()
{
$products = Products::whereKey($this->selected);
$products->delete();
$this->showDeleteModal = false;
$this->selected = [];
}
我尝试了以下方法
- 为了改变我在组件视图中调用分页的方式,所以我尝试
{{ $products->withQueryString()->links() }}
而不是 {{ $products->links() }}
- 我试图在
config\livewire.php
中将 'asset_url'
从 null
更改为 http://localhost
- 我尝试了
php artisan route:clear
和 php artisan route:cache
None 以上似乎解决了问题,所以我在这里结束,希望你们中的一些人遇到同样的问题并设法解决它。
谢谢。
/**更新**/
我刚刚在一个新的 Laravel 项目上重建了数据table,但我遇到了同样的错误。
如果有人感兴趣,我用代码做了一个 github 回购:
https://github.com/mvpopuk/livewire-datatable
看来你在看 livewire 截屏视频,我也一直在看。很可能您在创建记录后立即将其删除。在这种情况下,您的 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 问题。
为了解决这个问题,我使用了 link 中的解决方案:
基本上我必须将相应的模型记录设置为空,它仍然存在于 Livewire 内存中(在最后一步的编辑期间)。
$user_id = User::findOrFail($id);
$user_id->delete();
$this->user = null; // Important
为了换一种方式解决这个问题,我们也可以选择软删除..只需将数据库中的用户记录状态列更新为0,这样模型记录就存在于Livewire内存中。
调用 delete() 方法后,尝试转到 table 的另一页时,出现 404 未找到错误。
这是我的删除方法:
public $selected = [];
public function deleteSelected()
{
$products = Products::whereKey($this->selected);
$products->delete();
$this->showDeleteModal = false;
$this->selected = [];
}
我尝试了以下方法
- 为了改变我在组件视图中调用分页的方式,所以我尝试
{{ $products->withQueryString()->links() }}
而不是 - 我试图在
config\livewire.php
中将 - 我尝试了
php artisan route:clear
和php artisan route:cache
{{ $products->links() }}
'asset_url'
从 null
更改为 http://localhost
None 以上似乎解决了问题,所以我在这里结束,希望你们中的一些人遇到同样的问题并设法解决它。
谢谢。
/**更新**/
我刚刚在一个新的 Laravel 项目上重建了数据table,但我遇到了同样的错误。
如果有人感兴趣,我用代码做了一个 github 回购: https://github.com/mvpopuk/livewire-datatable
看来你在看 livewire 截屏视频,我也一直在看。很可能您在创建记录后立即将其删除。在这种情况下,您的 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 问题。 为了解决这个问题,我使用了 link 中的解决方案: 基本上我必须将相应的模型记录设置为空,它仍然存在于 Livewire 内存中(在最后一步的编辑期间)。
$user_id = User::findOrFail($id);
$user_id->delete();
$this->user = null; // Important
为了换一种方式解决这个问题,我们也可以选择软删除..只需将数据库中的用户记录状态列更新为0,这样模型记录就存在于Livewire内存中。