gpt4 book ai didi

symfony - 未提供给服务的参数

转载 作者:行者123 更新时间:2023-12-02 22:05:02 24 4
gpt4 key购买 nike

我的验证器服务未提供给验证器。我得到一个错误:“警告:My\Bundle\Validator\Constraints\MyCustomValidator::__construct() 缺少参数 1...”

这是我的services.yml

// My\Bundle\Resources\config\services.yml
services:
my.validator.service:
class: My\Bundle\Validator\Constraints\MyCustomValidator
arguments: [ @doctrine.orm.entity_manager ]

这是我的验证器类:

// My\Bundle\Validator\Constraints\MyCustomValidator
namespace My\Bundle\Validator\Constraints;

use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;
use Symfony\Component\DependencyInjection\ContainerInterface as Container;
use Doctrine\ORM\EntityManager;

class MyCustomValidator extends ConstraintValidator
{
private $em;

public function __construct($em)
{
$this->em = $em;
}

public function validate($value, Constraint $constraint)
{
// Do something
}
}

这是我的 validation.yml

// My\Bundle\Resources\config\validation.yml
My\Bundle\Entity\Page:
properties:
name:
- NotBlank: ~
- My\Bundle\Validator\Constraints\MyCustom: ~

这是我的约束类

namespace My\Bundle\Validator\Constraints;

use Symfony\Component\Validator\Constraint;

class MyCustom extends Constraint
{
public $message = 'Something is wrong with "%string%".';

public function validatedBy()
{
return get_class($this) . 'Validator';
}
}

如果有人能帮助我,我将不胜感激。

我也尝试将参数名称更改为“@doctrine.orm.default_entity_manager”,但没有成功。

最佳答案

问题是我的 services.yml。因为该服务被用作验证器,所以我必须使用 validator.constraint_validator 标签。这在文档中。哎呀!

services:
my.validator.service:
class: My\Bundle\Validator\Constraints\MyCustomValidator
arguments: [ @doctrine.orm.entity_manager ]
tags:
- { name: validator.constraint_validator, alias: my_custom_alias}

我还需要覆盖约束类 validatedBy() 方法,以便它返回上面的别名,例如:

// My\Bundle\Validator\Constrains\MyCustom.php
public function validatedBy()
{
return 'my_custom_alias';
}

关于symfony - 未提供给服务的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16273025/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com