断言\类型不在Symfony2表单验证中工作

时间:2015-06-28 16:15:53

标签: validation symfony

我有一个包含需要整数的字段的表单。这是表单类型实体定义中的字段定义:

/**
 * @ORM\Column(type="integer", nullable=true)
 * @Assert\Type(type="integer", message="Number of pieces must be a number.")
 * @Assert\GreaterThanOrEqual(value=1, message="Number of pieces cannot be lower than 1.")
 */
protected $numberOfPiecesSent;

相关表单构建器如下所示:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('numberOfPiecesSent', 'integer', array('label' => 'Number of pieces sent:', 'required' => false));
}

当我在字段中提交带有非数字值的表单(例如,'aaa')时,它只保存表单并在数据库中保留字段numberOfPiecesSent NULL,而不是在验证时失败。我也尝试使该字段为非NULL,但这没有帮助。有什么想法,为什么这不起作用,拜托?

2 个答案:

答案 0 :(得分:2)

我刚刚测试过,这很好用。您可以在下面的属性中添加约束。您也可以删除NotBlank。根据需要修改。

实体

/**
 * @ORM\Column(type="integer", nullable=true)
 */
protected $numberOfPiecesSent;

形式

use Symfony\Component\Validator\Constraints\NotBlank;
use Symfony\Component\Validator\Constraints\Range;

->add(
    'numberOfPiecesSent',
    'integer',
    [
        'constraints' => [
            new NotBlank(
                [
                    'message' => 'The numberOfPiecesSent is required.'
                ]
            ),
            new Range(
                [
                    'min' => 1,
                    'minMessage' => "The numberOfPiecesSent must contain at least {{ limit }}"
                ]
            )
        ]
    ]
)

更新

use Symfony\Component\Validator\Constraints\Regex;

->add(
    'name',
    'text',
    [
        'constraints' => [
            new Regex(
                [
                    'pattern' => "/^[0-9]+$/"
                ]
            )
        ]
    ]
)

OR

use Symfony\Component\Validator\Constraints\Regex;

->add(
    'name',
    'integer',
    [
        'constraints' => [
            new Regex(
                [
                    'pattern' => "/^[0-9]+$/"
                ]
            )
        ]
    ]
)

答案 1 :(得分:0)

您是否尝试使用以下字段使字段为空: @ORM\Column(type="integer", nullable=false) 或者您是否也尝试过断言NotNull? http://symfony.com/fr/doc/current/reference/constraints/NotNull.html