Yog*_*ogi 8 php laravel laravel-livewire
我在我的项目中使用 Laravel Livewire,我wire:loading用于在单击时加载状态。我在 foreach 循环中迭代了所有任务,但加载状态适用于所有组件。这是代码。
刀片文件
GitLab:https ://gitlab.com/tasklog/tasklog/-/blob/master/resources/views/livewire/home/tasks.blade.php
<button type="button" wire:click="togglePraise({{ $task->id }}, {{ $task->user->id }})">
<span class="small text-black-50 font-weight-bold">
{{ $task->task_praise->count() }}
</span>
<div wire:loading wire:target="togglePraise">
Processing...
</div>
</button>
Run Code Online (Sandbox Code Playgroud)
控制器文件
GitLab:https ://gitlab.com/tasklog/tasklog/-/blob/master/app/Http/Livewire/Home/Tasks.php
public function togglePraise($id, $user_id)
{
if (Auth::check()) {
if (Auth::user()->id === $user_id) {
session()->flash('message', 'Forbidden!');
return;
}
$isPraised = TaskPraise::where([
['user_id', Auth::user()->id],
['task_id', $id],
])->count();
if ($isPraised === 1) {
TaskPraise::where([
['user_id', Auth::user()->id],
['task_id', $id],
])->delete();
return true;
} else {
TaskPraise::create([
'task_id' => $id,
'user_id' => Auth::user()->id,
]);
return true;
}
} else {
return session()->flash('message', 'Forbidden!');
}
}
Run Code Online (Sandbox Code Playgroud)
我知道这个问题是在 v2 发布之前提出的,但添加了 v2 的答案以供参考。
根据Livewire 文档,如果您使用的是 v2,您可以在wire:target 指令中指定操作及其参数。对于你的例子,它会是这样的:
wire:target="togglePraise({{ $task->id }}, {{ $task->user->id }})"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3376 次 |
| 最近记录: |