2012-03-05 4 views
0

私はsymfony 2でdatatransformer持っている:私は私のコントローラでこの例外をキャッチする方法を見つけ出すことはできませんSymfony2:DataTransformer例外をキャッチする方法は?

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()関数から返されませんでした。)

誰もが任意のアイデアを持っている例外をトリガーすることをかなり確信していますか?

+0

ここに似たような質問を投稿しました:http://stackoverflow.com/questions/9378863/symfony2-data-transformers-getting-exception-message – Nanocom

答えて

3

短い答えはありません。

のSymfony \コンポーネント\フォーム\フォームを見てみましょう::バインド()

try { 
     // Normalize data to unified representation 
     $normData = $this->clientToNorm($clientData); 
     $synchronized = true; 
    } catch (TransformationFailedException $e) { 
    } 

のでTransformationFailedExceptionは黙って無視されます。その動作はちょっと困惑していますが、変圧器が意図するものではない変圧器の内部で検証をしようとしている可能性があります。

エラーチェックコードコードをバリデーターに移動すると、問題が発生します。

3

TransformationFailedExceptionsフォームに無効なフィールドが表示されます。例外をより高くバブルアップしたい場合は、別の例外をスローします。

関連する問題