1

理解できない奇妙な Symfony2 の動作があります。エンティティ Product があるとします。

class Product
{
    /** Some doctrine things */
    protected $id;

    /** Some doctrine things */
    private $title;

    /**
     * @ORM\Column(type="decimal", precision=10, scale=2)
     * @Assert\NotBlank(message="This field cannot be empty.")
     * @Assert\GreaterThan(value=0, message="Please enter an amount higher than 0.")
     */
    private $price;

    /** Getters and setters */
}

製品を追加するには、次のフォームを使用して、ProductType フォームを使用しています。

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('title', 'text')
        ->add('price', 'money', array('currency' => false, 'invalid_message' => 'Please enter a valid value.'))
}

無効な値を送信した場合を除いて、すべて正常に動作しています。

  • 期待どおり、 1fooは「有効な値を入力してください」を生成します。
  • foo1が内部サーバー エラーを生成する: 「警告: NumberFormatter::parse(): 数値の解析に失敗しました」
  • fooが内部サーバー エラーを生成する: 「警告: NumberFormatter::parse(): 数値の解析に失敗しました」

ローカルの WampServer で SF2 v2.6 を使用しています。

4

2 に答える 2

1

あなたは$priceあなたのエンティティとcostsあなたのフォームタイプにあります。

そして、私はそれを推測しfoo1foonullに変換します。したがって、セッターでこれをキャッチするか、たとえば正規表現アサーションを使用できます。

于 2015-02-02T14:04:48.923 に答える
0

Symfony 2.6 と Wampserver でも同じ問題に遭遇しました。

php.ini で php_intl 拡張機能を無効にすることで一時的に解決しました。次に、 Assert\Type(type="decimal") は、数字形式に対して自動的に検証されるため、廃止されたようです。したがって、必要なのは Formtype フィールドに「invalid_message」オプションを設定することだけです。

お役に立てれば。

于 2015-02-18T13:24:43.407 に答える