我试图将一个EntityManager对象发送给我的自定义验证器。为此,我创建了一个服务并将实体管理器定义为一个参数。在Symfony2中创建自定义验证器作为服务
问题是参数未发送给验证程序,它在__construct()函数中触发了一个错误,指示没有参数已被传递。
这是我服务的定义:
dinamic.shop.validator.deliverydate:
class: Dinamic\ShopBundle\Validator\Constraints\DeliveryDateValidator
arguments:
- @doctrine.orm.entity_manager
tags:
- { name: validator.constraint_validator, alias: deliverydate }
这里是我的约束的validateBy()方法:
class DeliveryDate extends Constraints
{
...
public function validateBy()
{
return 'deliverydate';
}
}
这里是我的ConstraintValidator:
最后,这是我如何在该字段上设置约束。该字段没有映射到任何实体:
->add('deliveryday', 'date', array(
'label' => 'Día de entrega',
'widget' => 'single_text',
'format' => 'dd/MM/yyyy',
'constraints' => array(
new NotBlank(),
new DeliveryDate($deliveryDateOptions),
),
)
)
我认为我的错误是在FormType类,在这里我设置了约束的领域,但我无法找到非映射字段的任何例子。
我使用Symfony2.3,任何帮助将不胜感激,非常感谢。
[编辑]
我用命令“sudo的PHP应用程序/控制台容器:调试| grep的验证”,我已经创建的服务出现在结果
dinamic.shop.validator.deliverydate container Dinamic\ShopBundle\Validator\Constraints\DeliveryDateValidator
很抱歉,但我都试过的语法和他们都没有工作。此外,console命令输出具有相同名称的服务,所以参数名称是正确的。另外,我尝试将服务的'class'参数更改为不存在的参数,而且没有任何更改,因此服务配置根本没有被使用。 – Joel 2014-11-21 13:03:02