簡體   English   中英

Symfony 3.4:RecursiveValidator還是TraceableValidator?

[英]Symfony 3.4 : RecursiveValidator or TraceableValidator?

我的服務有問題。

 <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不解決問題。

謝謝您的幫助。

您應始終(如果可用)提示接口,而不是暗示實現。 在這種情況下, RecursiveValidatorTraceableValidator實現了ValidatorInterface

所以你的構造函數應該是這樣的:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM