You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Livewire 如何实时统计已勾选的学生复选框数量

实现方案

你用的是Laravel Livewire框架,依托框架的双向绑定特性,只需要两步就可以实现实时统计效果:

步骤1:确认Livewire组件属性配置

首先在你的Livewire组件类中声明公开的selectedStudents数组属性,用于存储勾选的学生ID:

// 对应Livewire组件文件,示例路径:app/Http/Livewire/StudentList.php
class StudentList extends Component
{
    // 新增/确认存在这个公开属性,初始化为空数组
    public array $selectedStudents = [];

    // 保留你原有逻辑,比如editModal方法等
    public function editModal()
    {
        // 原有逻辑不变
    }

    public function render()
    {
        // 原有渲染逻辑不变
    }
}

步骤2:修改按钮显示代码

直接在按钮模板中对selectedStudents数组做计数即可,Livewire会在勾选复选框时自动同步数组内容,实现实时更新:

<button   
    wire:click="editModal"
    class="bg-blue-500 hover:bg-blue-300 text-white font-bold py-2 px-4 border-b-4 border-blue-700 hover:border-blue-500 rounded"
    <!-- 可选:如果有教室容量上限,比如最多选30人,超过时禁用按钮 -->
    {{ count($selectedStudents) > 30 ? 'disabled' : '' }}
>
    Transfer Student({{ count($selectedStudents) }} of selected students) 
</button>

如果实际测试中取消勾选后计数没有同步减少,说明对应键的值被设为false而非删除,把计数逻辑改成count(array_filter($selectedStudents))即可过滤无效项。

可选优化:限制可选数量

如果需要严格控制勾选上限,避免用户选超过教室容量的人数,可以在组件中加钩子方法做限制:

// 在Livewire组件类中添加updated钩子
public function updatedSelectedStudents($value, $key)
{
    $maxCapacity = 30; // 替换为你的教室实际最大容量
    if (count($this->selectedStudents) > $maxCapacity) {
        unset($this->selectedStudents[$key]);
        // 可选:加个提示告诉用户已达上限
        session()->flash('limitTip', '已达教室最大容量,无法勾选更多学生');
    }
}

内容的提问来源于stack exchange,提问作者itsme joe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 15:06:04