php - 交响乐 3.4 : RecursiveValidator or TraceableValidator?

标签 php symfony

我的服务有问题。

 <service id="api.api" class="ApiBundle\Service\ApiService">
        <argument type="service" id="request_stack"/>
        <argument type="service" id="validator"/>
 </service>

__construct 是:

public function __construct(RequestStack $requestStack, RecursiveValidator  $validator)
{
    $this->request = $requestStack->getCurrentRequest();
    $this->validator = $validator;
}

问题是:

  • ENV_DEV,验证器必须是TraceableValidator
  • 的一个实例
  • ENV_PROD,验证器必须是RecursiveValidator
  • 的一个实例

你知道我为什么有这个冲突吗?

在带有 RecursiveValidator 的 ENV_DEV 中,我有这个错误:

Type error: Argument 2 passed to 
ApiBundle\Service\ApiService::__construct() must be an instance of 
Symfony\Component\Validator\Validator\RecursiveValidator, 
instance of Symfony\Component\Validator\Validator\TraceableValidator 
given, called in 
var/cache/dev/ContainerLqjid6c/getApi_ApiService.php on line 8

cache:clear 没有解决问题。

感谢您的帮助。

最佳答案

您应该始终(如果可用)提示接口(interface),而不是提示实现。在这种情况下,RecursiveValidatorTraceableValidator实现 ValidatorInterface .

所以你的构造函数应该是这样的:

public function __construct(RequestStack $requestStack, ValidatorInterface  $validator)
{
    $this->request = $requestStack->getCurrentRequest();
    $this->validator = $validator;
}

关于php - 交响乐 3.4 : RecursiveValidator or TraceableValidator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48625402/

相关文章:

javascript - 使用 PDF.js 生成 pdf 的缩略图

php - 如何上传到同一帐户的特定 YouTube channel ? (YouTube 数据 API)

Doctrine 无法产生关系

php - 如何使用没有实体类的表单上传文件

php - Magento 1.9 创建新的 Hello World 模块

php - 基于随机顺序的下一个和上一个MYSQL

php - 使用 javascript 和 PHP 生成相同的 MD5

symfony - 无法将 symfony 应用程序部署到 Heroku

php - Symfony 3、Php 和 Ubuntu 16 无法上传大文件

php - Symfony2 Doctrine 元数据缓存与 Redis 问题