Symfony2:Money字段类型无效输入错误

时间:2015-02-02 12:01:44

标签: forms validation symfony money-format

我有一些奇怪的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():数字解析失败'
  • foo 生成内部服务器错误:'警告:NumberFormatter :: parse():数字解析失败'

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

2 个答案:

答案 0 :(得分:1)

您的实体中有$price,表单类型中有costs

我想foo1foo会转换为null。所以你可以在setter中捕获它或使用例如Regex断言。

答案 1 :(得分:0)

我刚刚遇到了与Symfony 2.6和Wampserver相同的问题。

我暂时通过禁用php.ini中的php_intl扩展来解决它。然后,Assert \ Type(type =" decimal")似乎已经过时,因为它会自动验证数字格式。因此,您只需设置一个" invalid_message"您的Formtype字段上的选项。

希望这有帮助。