我的服务有问题.
<service id="api.api" class="ApiBundle\Service\ApiService">
<argument type="service" id="request_stack"/>
<argument type="service" id="validator"/>
</service>
Run Code Online (Sandbox Code Playgroud)
__construct是:
public function __construct(RequestStack $requestStack, RecursiveValidator $validator)
{
$this->request = $requestStack->getCurrentRequest();
$this->validator = $validator;
}
Run Code Online (Sandbox Code Playgroud)
问题是:
你知道我为什么会有这场冲突吗?
在带有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
Run Code Online (Sandbox Code Playgroud)
cache:clear 没有解决问题.
谢谢您的帮助.
您应始终(如果可用)提示接口,而不是暗示实现.在这种情况下,无论是RecursiveValidator和TraceableValidator落实ValidatorInterface.
所以你的构造函数应该是这样的:
public function __construct(RequestStack $requestStack, ValidatorInterface $validator)
{
$this->request = $requestStack->getCurrentRequest();
$this->validator = $validator;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
514 次 |
| 最近记录: |