我試圖將一個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