【发布时间】:2021-02-28 14:51:39
【问题描述】:
我在 Laravel 8 中使用 Livewire 和 Alpine。
我有一个带有 Datatable (jQuery) 和 Bootstrap 模式的页面。
该表中填充了模型实例列表中的一些数据。
当我单击表格中的按钮时,它会打开模式并允许编辑相应的记录。
这部分按预期工作。
然而,Datatable 库更难与 Livewire 一起使用,所以我决定在 <div> 中使用 wire:ignore 属性来限定整个 Datatable .
因此,如果我想在修改后刷新 Datatable,我不能使用魔法 $refresh,因为 Datatable 目前在 @ 内987654324@.
所以我想在编辑完成后重新加载整个页面,但我不知道该怎么做,return redirect()->back() 不起作用...
这就是我的save 方法的样子,当从模态框编辑完成时会调用它:
public function save()
{
MyModel::where('id', $this->edited_id)->update([...]);
$this->clearSelection();
return redirect()->back(); // This is not working
}
这是我的桌子:
<div wire:ignore>
<table class="dt-table table">
<thead>
<tr>
<th>Actions</th>
<th>id</th>
<th>name</th>
<th>other</th>
</tr>
</thead>
<tbody>
@foreach ($models as $m)
<tr>
<td>
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#mymodal">Edit</button>
</td>
<td>{{ $m->id }}</td>
<td>{{ $m->name }}</td>
<td>{{ $m->somedata }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
【问题讨论】:
-
试试
location.reload(); -
@KamleshPaul 您的意思是调用 Javascript 来初始化页面重新加载。我想知道 Livewire 组件(在 PHP 中)是否有直接的解决方案,比如 redirect() 或其他东西
标签: laravel laravel-livewire alpine.js