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

Symfony传递int类型ID却提示‘string given’错误求助

问题分析与解决

错误根源

你遇到的类型不匹配错误,核心原因是参数绑定的类型不兼容:

  • ReservationEventSubscriber构造函数要求第三个参数是int类型的$pieceId
  • 但在service.yaml中,你绑定的%id%参数值是字符串'secret',注入时无法自动转换成整数,触发类型校验失败。

解决方案

根据你的实际业务需求,选择以下一种处理方式:

方式1:如果pieceId本应是整数

直接修改parameters里的id值为合法整数:

parameters:
  id: 123 # 替换为你实际需要的整数ID

方式2:需要将字符串参数转为整数注入

如果%id%必须保留字符串形式,但需要转换为整数后注入,可以使用Symfony表达式语言实现类型转换:

services:
  _defaults:
    # ... 保留原有配置
    bind:
      int $pieceId: '@=int(%id%)'

注意:这种方式要求%id%的字符串值可以被合法转换为整数(比如'123'可以转成123),如果'secret'本身不是可转换的数值,你需要重新确认这个参数的用途是否正确。

最后一步:清理缓存

修改配置后,务必执行缓存清理命令,确保新配置生效:

php bin/console cache:clear

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 09:55:24