【问题标题】:Injecting the validator service into a bundle将验证器服务注入到包中
【发布时间】:2015-04-06 12:33:41
【问题描述】:

我正在一个新的工作场所学习 Symfony2,我的任务是为当前使用基于内联的不良代码而不是 Symfony 验证器和注释的代码添加验证。

我已经为我的模型添加了验证注解,并向我的构造函数添加了一个参数。我还向 service.yml 添加了一个参数,以便将其注入到我的包的类中,但似乎我找不到

@validator

按照 Symfony 文档 (http://symfony.com/doc/current/book/validation.html) 中的描述。如果我正确阅读了文档,我应该能够将 @validator 添加到我的 services.yml 并将其直接提供给我的班级,但是在运行我的测试时,它说找不到服务 @validator:

The service "ugroup_media_personalization.flattening_service" 
has a dependency on a non-existent service "validator"

那么我在这里做错了什么?

【问题讨论】:

  • 很奇怪,检查服务是否真的加载到容器中从shell启动命令:php app/console container:debug | grep validator
  • 不,没有返回...这可能是因为我在捆绑?我知道那家伙谈到在测试中加载内核。我已经在测试文件夹中的 AppKernel.php 中打开以确保验证器包在其中,但我认为它是已经加载的框架包的一部分
  • 首先,@validator 应该是正确的服务名称吗?如果不是,用于注入验证器服务的 service.yml 文件中正确的服务名称是什么?
  • 你做对了!你的 sf2 安装有些奇怪。是标准版吗?您要查找的服务在 frameworkbundle 中定义。
  • 发现问题,我会在一分钟内发布解决方案,framework.validator 配置不是捆绑包的一部分,因此验证未激活

标签: php symfony


【解决方案1】:

问题是捆绑包的配置文件没有指定

framework:
    validation: {enable_annotations: true}

因此框架没有加载验证服务。您可以简单地使用:

framework:
    validation:

如果您想触发加载验证模块,但在我的情况下,我添加了 enable_annotations 以确保使用注释进行验证工作!

【讨论】:

    猜你喜欢
    • 2017-03-01
    • 2017-07-27
    • 2016-05-16
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    • 1970-01-01
    • 2011-03-17
    • 2010-11-04
    相关资源
    最近更新 更多