在将项目从Symfony 5.4迁移到6.2时,我注意到一些(对我来说)令人费解的行为。在其中两个项目中,我在实体中有#[Assert\Expression()
属性,这导致了ValidatorException
:
约束验证器“validator.expression”不存在或未启用。请检查约束类“Symfony\Component\Validator\Constraints\Expression”中的“validatedBy”方法。
我觉得神秘的是:
- 这两个项目都需要
symfony/validator
和symfony/expression-language
。到目前为止,我还没有注意到使用Symfony\Component\Validator\Constraints\Expression
的额外要求或必要配置。 - 在第三个项目中--一个最近从头开始创建的项目--expression约束完美地工作。但是在项目的配置中我找不到任何原因为什么约束在这里工作。当然,项目使用
symfony/validator
和symfony/expression-language
,我没有做任何其他事情来启用expression约束。
这三个项目都基于PHP 8.1和Symfony 6.2,并且它们都运行在同一台开发机器上。我通过创建新的Sf 6.2 symfony/skeleton
安装,添加需求,然后从遗留项目中复制代码配置来迁移这两个遗留项目-而新项目也是从6.2 symfony/skeleton
创建的。
任何关于问题原因的想法都是受欢迎的。
1条答案
按热度按时间mkh04yzy1#
正如@vodevel所指出的,这是symfony/framework-bundle 6.2.8中的一个问题。升级解决了这个问题。