我有一个包含需要整数的字段的表单。这是表单类型实体定义中的字段定义:
/**
* @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,但这没有帮助。有什么想法,为什么这不起作用,拜托?
答案 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