我在configureFormFields函数中定义了no-mapped属性
add('numberOfSubproducts', 'integer',array('mapped' => false,'required' => true, 'data'=> 1))
和验证函数中的约束
assertRange(['min' => 0, 'max' => 9999])
我收到错误:
类numberOfSubproducts
getNumberOfSubproducts()
,方法isNumberOfSubproducts()
和方法path\to\entity
如何以正确的方式在SonataAdminBundle中为无映射属性定义约束?
答案 0 :(得分:2)
由于constraints
属性,您可以直接在表单中验证字段。请参阅official documentation。
$builder
->add('lastName', 'text', array(
'constraints' => array(
new NotBlank(),
new Length(array('min' => 3)),
),
))
答案 1 :(得分:1)
最简单的方法是将其定义为实体的属性,而不将其声明为ORM \ Column。
使用注释,你可以这样做:
实体类声明中的:
use Symfony\Component\Validator\Constraints as Assert;
// ...
/**
* Assert\Range(min=0, max=9999)
*/
protected $numberOfSubproducts;
// ...
public function getNumberOfSubproducts()
{
return $this->numberOfSubproducts;
}
public function setNumberOfSubproducts($numberOfSubproducts)
{
$this->numberOfSubproducts = $numberOfSubproducts;
return $this;
}
答案 2 :(得分:0)
验证表单的第一种方法是FormType http://symfony.com/doc/2.2/book/forms.html#form-validation
如果您想要自定义验证(仅适用于组的那些),您也可以使用验证组 http://symfony.com/doc/2.2/book/forms.html#validation-groups
其次是创建表单,简单调用createFormBuilder()。然后输入每个字段的自定义验证 http://symfony.com/doc/2.2/book/forms.html#building-the-form