Symfony2:如何捕获DataTransformer异常?
我在symfony 2中有一个数据转换器:Symfony2:如何捕获DataTransformer异常?,symfony,Symfony,我在symfony 2中有一个数据转换器: namespace Techforge\ApartmentBundle\Form\DataTransformer; use Symfony\Component\Form\Exception\TransformationFailedException; use Symfony\Component\Form\DataTransformerInterface; use Doctrine\Common\Persistence\ObjectManager;
namespace Techforge\ApartmentBundle\Form\DataTransformer;
use Symfony\Component\Form\Exception\TransformationFailedException;
use Symfony\Component\Form\DataTransformerInterface;
use Doctrine\Common\Persistence\ObjectManager;
class SearchboxToCityTransformer implements DataTransformerInterface {
public function reverseTransform($string)
{
//...
if(!$city)
throw new TransformationFailedException(sprintf('City not found.'));
}
//...
我不知道如何在控制器中捕获此异常
我以为它会被扔到一个表单绑定上:
$form->bindRequest($request);
但情况似乎并非如此(我测试了这个,还测试了控制器中的其他部分)
另外,我很确定我触发了异常,因为该字段没有出现在参数包中(reverseTrasnform()函数没有返回任何内容)
有人有什么想法吗?简单的回答是:你没有 看看Symfony\Component\Form\Form::bind() 因此TransformationFailedException被默默地忽略。这些行为有点令人费解,但很可能您正在尝试在变压器内部进行验证,而这不是变压器的用途
将错误检查代码移动到验证器,事情就应该安排妥当了。简单的回答是:你没有 看看Symfony\Component\Form\Form::bind() 因此TransformationFailedException被默默地忽略。这些行为有点令人费解,但很可能您正在尝试在变压器内部进行验证,而这不是变压器的用途
将错误检查代码移动到验证器,事情就应该就绪。TransformationFailedExceptions将导致表单中出现无效字段。如果要使异常冒泡得更高,请抛出另一个异常。TransformationFailedExceptions将导致表单中出现无效字段。如果您想让异常冒泡得更高,请抛出另一个异常。在此处发布类似问题:在此处发布类似问题:
try {
// Normalize data to unified representation
$normData = $this->clientToNorm($clientData);
$synchronized = true;
} catch (TransformationFailedException $e) {
}