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

解决htmlspecialchars() expects parameter 1 to be string, array given错误——Bootstrap动态表格添加行异常问题

修复Bootstrap动态表格添加行时的htmlspecialchars()类型错误

看起来你遇到的问题是Blade UI Kit的输入组件在处理数组格式的name属性时出现了类型不匹配错误。我来帮你一步步解决这个问题:

错误根源

这个报错htmlspecialchars() expects parameter 1 to be string, array given,是因为你使用的Blade UI Kit <x-input> 组件在处理类似product[]这种数组格式的name属性时,把它当成了数组而非字符串传入了htmlspecialchars()函数,导致类型校验失败。


修复方案(两种可选)

方案1:改用原生HTML Input标签(最省心)

你的原始代码本来就用的是原生HTML输入框,它对数组格式的name属性支持是原生的,完全适配动态添加行的逻辑,不会触发组件的类型错误。

把所有Blade UI的组件写法改回原生HTML即可:

<!-- 错误的Blade组件写法 -->
<x-input name="product[]" placeholder="Enter Product Name" class="form-control" />

<!-- 改回原生HTML写法(和你最初的代码一致) -->
<input type="text" name="product[]" placeholder="Enter Product Name" class="form-control" />

对所有涉及qty[]、price[]、total[]的输入框都做同样修改,之后动态添加行的逻辑就能正常运行,计算总价的JS也能正常工作。

方案2:调整Blade UI Kit组件的使用方式(如果你坚持用组件)

如果你一定要保留Blade UI的组件,需要处理name属性的类型问题:

  1. 确保name属性以字符串传递
    明确把数组格式的名称作为字符串传入组件:

    <x-input name="product[]" type="text" placeholder="Enter Product Name" class="form-control" />
    

    注意一定要显式传递type属性,避免组件默认值引发的额外问题。

  2. 自定义组件处理数组类型
    如果你还是报错,可以发布Blade UI的组件到本地视图目录,然后修改input.blade.php文件:
    找到组件中渲染name属性的代码,添加类型转换逻辑:

    <!-- 修改前 -->
    name="{{ htmlspecialchars($name) }}"
    
    <!-- 修改后 -->
    name="{{ htmlspecialchars((string) $name) }}"
    

    这样即使传入的是数组类型,也会被强制转换成字符串,避免类型错误。


额外验证

修改完成后,点击「Add Row」按钮测试:

  • 新行应该能正常渲染出来
  • 填写数量和单价后,总价、小计、税额、总计都能正确计算
  • 不会再出现htmlspecialchars()的类型错误提示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 12:13:12