Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Validation 在Symfony2中将自定义验证器创建为服务_Validation_Symfony_Service - Fatal编程技术网

Validation 在Symfony2中将自定义验证器创建为服务

Validation 在Symfony2中将自定义验证器创建为服务,validation,symfony,service,Validation,Symfony,Service,我正在尝试向我的自定义验证器发送EntityManager对象。为此,我创建了一个服务,并将实体管理器定义为一个参数 问题是参数没有发送到验证器,它在_构造函数中触发了一个错误,表明没有传递任何参数 这是我的服务的定义: dinamic.shop.validator.deliverydate: class: Dinamic\ShopBundle\Validator\Constraints\DeliveryDateValidator arguments: - @d

我正在尝试向我的自定义验证器发送EntityManager对象。为此,我创建了一个服务,并将实体管理器定义为一个参数

问题是参数没有发送到验证器,它在_构造函数中触发了一个错误,表明没有传递任何参数

这是我的服务的定义:

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 app/console container:debug | grep validator命令,我创建的服务显示在结果上

dinamic.shop.validator.deliverydate container Dinamic\ShopBundle\Validator\Constraints\DeliveryDateValidator

这很可能是其中一个语法问题

语法可以是这样的:

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
....

我发现了错误。问题是函数“validateBy”,它应该由

所以我需要做的唯一改变就是改变这个函数


谢谢您的帮助@Patt

对不起,我已经尝试了两种语法,但都不起作用。console命令还以相同的名称输出服务,因此参数名称是正确的。此外,我尝试将服务的“class”参数更改为不存在的参数,但没有任何更改,因此根本不使用服务配置。