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
相关产品推荐
相关产品推荐

