1

我不明白一些奇怪的 Symfony2 行为。假设有一个实体产品:

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(): Number parsing failed”
  • foo生成内部服务器错误:“警告:NumberFormatter::parse(): Number parsing failed”

我在本地 WampServer 上使用 SF2 v2.6。

4

2 回答 2

1

$price在实体和costs表单类型中都有。

我猜是foo1并且foo被转换为null。所以你可以在你的 setter 中捕捉到这一点,或者使用例如 Regex 断言。

于 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 回答