我的验证器服务未提供给验证器.我收到一个错误:"警告:我的\ 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 ]
Run Code Online (Sandbox Code Playgroud)
这是我的验证器类:
// 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
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的validation.yml
// My\Bundle\Resources\config\validation.yml
My\Bundle\Entity\Page:
properties:
name:
- NotBlank: ~
- My\Bundle\Validator\Constraints\MyCustom: ~
Run Code Online (Sandbox Code Playgroud)
这是我的Constraint课程
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';
}
}
Run Code Online (Sandbox Code Playgroud)
如果有人可以帮助我,我会非常感激.
我已经尝试将参数名称改为"@ 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}
Run Code Online (Sandbox Code Playgroud)
我还需要重写Constraint类validatedBy()方法,以便它返回上面的别名,例如:
// My\Bundle\Validator\Constrains\MyCustom.php
public function validatedBy()
{
return 'my_custom_alias';
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1692 次 |
| 最近记录: |