【发布时间】:2017-12-21 21:24:14
【问题描述】:
我正在使用 symfony 3.2,并且我有一个类(用于检查给定电子邮件地址是否已被占用的表单的验证器),它被定义为服务并接受 3 个注入其中的参数:
arguments:
entityManager: "@doctrine.orm.entity_manager"
translator: '@translator'
tokenStorage: '@security.token_storage'
“translator”属于“DataCollectorTranslator”类型。
现在,一切都在开发模式下工作,我检查了创建的缓存文件并找到了一个方法(名为“getLp_Validator_DuplicateEmailService”),它使用翻译器作为第二个参数创建验证器,如下所示:
$this->get('translator')
然而,在生产模式下,验证器是使用“translator.default”而不是“translator”创建的,导致缓存文件中出现以下行:
$this->get('translator.default')
这(不是很令人惊讶)导致以下错误:
Type error: Argument 2 passed to DuplicateEmailValidator::__construct() must be an instance of Symfony\\Component\\Translation\\DataCollectorTranslator, instance of Symfony\\Bundle\\FrameworkBundle\\Translation\\Translator given
为什么 symfony 会在 prod 和 dev 之间产生差异,我如何阻止它向我的班级注入错误类型的服务?
感谢任何提示!
【问题讨论】:
标签: php forms symfony validation