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

Livewire中wire:model绑定复选框值为字符串 如何转为整数类型

Livewire 复选框绑定值自动转为整数类型解决方案

问题原因

HTML 原生 input 元素的 value 属性默认始终为字符串类型,因此哪怕你传入的$category->id是整数,Livewire 同步绑定时默认也会以字符串格式存入restaurant_categories属性。

解决方案

方案一:使用 Livewire 类型强制转换(推荐,适用于 Livewire 2.x 及以上版本)

在你的 Livewire 组件类中定义$casts属性,指定restaurant_categories为整数数组类型即可,Livewire 会自动完成绑定值的类型转换:

protected $casts = [
    'restaurant_categories' => 'array:int',
];

方案二:使用生命周期钩子手动转换(适用于不支持 $casts 的旧版本 Livewire)

在组件类中添加updated钩子,监听restaurant_categories的变更,手动将数组元素转为整数:

public function updatedRestaurantCategories($value)
{
    $this->restaurant_categories = array_map('intval', $value);
}

额外优化建议

你现有代码中的复选框 value 写法建议补充引号,避免特殊场景下的解析错误:

value="{{$category->id}}"

如果你的restaurant_categories是存储选中ID的索引数组,原有选中判断的array_has方法建议替换为in_array,匹配数组结构:

@if(in_array($category->id, $restaurant_categories)) checked @endif

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:15:03