我正在尝试将EntityManager对象发送到我的自定义验证器。为此,我创建了一个服务,并将实体管理器定义为参数。
问题是参数没有发送到验证器,它在__construct()函数中触发一个错误,表明没有传递任何参数。
这是我服务的定义:
dinamic.shop.validator.deliverydate:
class: Dinamic\ShopBundle\Validator\Constraints\DeliveryDateValidator
arguments:
- @doctrine.orm.entity_manager
tags:
- { name: validator.constraint_validator, alias: deliverydate }
这是我的Constraint的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 app / console container:debug | grep validator”,我创建的服务出现在结果中
dinamic.shop.validator.deliverydate container Dinamic\ShopBundle\Validator\Constraints\DeliveryDateValidator
答案 0 :(得分:0)
很可能是这些语法问题之一!
语法可以是:
dinamic.shop.validator.deliverydate:
class: Dinamic\ShopBundle\Validator\Constraints\DeliveryDateValidator
arguments: [@doctrine.orm.entity_manager]
tags:
- { name: validator.constraint_validator, alias: deliverydate }
或者这个:
dinamic.shop.validator.deliverydate:
class: Dinamic\ShopBundle\Validator\Constraints\DeliveryDateValidator
arguments:
entityManager: "@doctrine.orm.entity_manager"
tags:
- { name: validator.constraint_validator, alias: deliverydate }
注意: 要检查您传递的服务是否存在:
php app/console container:debug | grep doctrine
会给你:
....
doctrine.orm.entity_manager n/a alias for doctrine.orm.default_entity_manager
....
答案 1 :(得分:0)
我发现了错误。问题是功能' validateBy'它应该是 validatedBy()
所以我需要做的唯一改变就是改变所说的功能。
感谢您帮助@Patt