2017-08-26 13 views
0

10進数のAssert検証ルールを使用しようとしていて、エラーで失敗します。ここで symfonyフォームの小数フィールドの妥当性確認

は、ここに私のエンティティである私のフォーム

$builder->add('cinp_number', 'number', array(
     'required' => false, 
    )); 

ある

入力として文字列値を持つフォームをsubmitingとき、これは誤りです:

Warning: NumberFormatter::parse(): Number parsing failed 

ログメッセージ:

request.CRITICAL: Uncaught PHP Exception Symfony\Component\Debug\Exception\ContextErrorException: "Warning: NumberFormatter::parse(): Number parsing failed" at C:\wamp\www\top_service\vendor\symfony\symfony\src\Symfony\Component\Form\Extension\Core\DataTransformer\NumberToLocalizedStringTransformer.php line 174 {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\ContextErrorException(code: 0): Warning: NumberFormatter::parse(): Number parsing failed at C:\\wamp\\www\\top_service\\vendor\\symfony\\symfony\\src\\Symfony\\Component\\Form\\Extension\\Core\\DataTransformer\\NumberToLocalizedStringTransformer.php:174)"} [] 

symfonyのバージョン:is_<type>()またはctype_<type>() PHP関数の3.2.13

+0

カスタムメソッドで手動[symfonyの2における検証小数]の可能な複製をeverytingを確認し(https://stackoverflow.com/questions/8979689/validating-decimals-in-symfony -2) – kunicmarko20

答えて

2

Type制約拠点。 PHPの定義にはdecimal型がありません。

symfonyのドキュメントのlist of supported types、またはPHP REFのVariable handling Functions/Ctype Functionsのリストをご覧ください。

あなたのケースでは、numericを試してください。

+0

私は 'numeric'で試しましたが、文字列を入力するときに同じエラーが発生しました '警告:NumberFormatter :: parse():Number parsing failed ' –

+0

この警告は検証の前に発生することがあります。より詳細な警告メッセージを添付してください。 – miikes

+0

ログメッセージ –

0

形でいくつかの値が1には、以下のバリデータを使用することができ小数であることを確認するには:それは、任意の数だ場合

レンジ場合の最小/最大値は、正規表現http://symfony.com/doc/current/reference/constraints/Range.html

/** 
* @Assert\Range(min=0, max=100500) 
*/ 
private $cinp_number; 

を定義していますここでは許容フォーマットを定義することもできますhttp://symfony.com/doc/current/reference/constraints/Regex.html

/** 
* @Assert\Regex("/^\d+(\.\d+)?/") 
*/ 
private $cinp_number; 

IsTruehttp://symfony.com/doc/current/reference/constraints/IsTrue.html

/** 
* @Assert\IsTrue() 
*/ 
public function isCinpNumberValid() 
{ 
    return $this->cinp_number == (float) $this->cinp_number; 
} 
+0

ありがとうございますが、なぜTypeAssertsが動作しませんか。https://symfony.com/doc/current/reference/constraints/Type.html –

関連する問題