1
我在我自己的堆棧中使用Form組件,並且我需要創建一個約束/驗證器對。我可以更改Constraint或ConstraintValidator中的值嗎?
問題是我需要修改約束內的值。例如:如果值爲123,請將其更改爲456.
我該怎麼做?我需要它由約束或驗證器來處理,因爲我不想在整個地方重複這個邏輯。
我在我自己的堆棧中使用Form組件,並且我需要創建一個約束/驗證器對。我可以更改Constraint或ConstraintValidator中的值嗎?
問題是我需要修改約束內的值。例如:如果值爲123,請將其更改爲456.
我該怎麼做?我需要它由約束或驗證器來處理,因爲我不想在整個地方重複這個邏輯。
在您的自定義約束中,如果它是表單類約束,則可以訪問變量$object
。 您應該能夠在驗證過程中調用set方法。
所以,在你自定義的約束類:
public function getTargets()
{
return self::CLASS_CONSTRAINT;
}
在您的自定義ConstraintValidator
public function validate($object, Constraint $constraint)
{
/*
* thensomewhere in the code
*/
if($object->getNumber() == 123){
$object->setNumber(456);
}
一些幫助來源:
http://symfony.com/doc/current/cookbook/validation/custom_constraint.html
http://symfony.com/doc/current/reference/constraints/Callback.html
你真的不希望驗證器更改你的數據。你看過DataTransformers嗎? http://symfony.com/doc/current/cookbook/form/data_transformers.html?如果這些不適合你,那麼也許你可以提供更多關於你爲什麼需要改變價值的細節。 – Cerad