3
我的簡單數據轉換器將數字轉換爲實體,反之亦然。這很像official documentation中的示例。如何在Symfony中自定義DataTransformer錯誤消息?
的reverseTransform
方法將數字轉換爲一個實體,並且當它失敗它拋出用描述消息的TransformationFailedException
:
public function reverseTransform($number)
{
if (!$number) {
return null;
}
$issue = $this->om
->getRepository('AcmeTaskBundle:Issue')
->findOneBy(array('number' => $number))
;
if (null === $issue) {
throw new TransformationFailedException(sprintf(
'An issue with number "%s" does not exist!',
$number
));
}
return $issue;
}
然而使用上述變壓器表單字段得到一個一般錯誤消息「該值是無效」。即使更改異常文本(我希望用作驗證消息,但不是......)不會更改錯誤消息。
如何顯示異常文本而不是「此值無效」?
首先,感謝。你的方法應該工作,並至少提供一些關於發生的事情的良好用戶反饋。也許有一個「標準」的方式來做到這一點,我會尋找更好的方式(如果有的話)或接受你的答案。 – gremo
我無法找到其他方法來定製此消息,但只有symfony表單捕獲此異常,而不是控制事件。 https://github.com/symfony/Form/blob/master/Form.php#L612因此,作爲解決方案,您可以使用POST_SUBMIT和控制同步屬性,但我沒有試過 – ZhukV
該異常僅用於調試,而不是被揭露,所提供的答案是要走的路。否則,應該使用其中一個提交監聽器,並在適當的消息中使用'$ form-> addError(new FormError('my message'))''。無論如何,它會導致根無效,並且具有良好的映射和良好的信息。 – Heah