Validation 如何验证无映射属性
我在configureFormFields函数中未定义映射属性Validation 如何验证无映射属性,validation,symfony,sonata-admin,Validation,Symfony,Sonata Admin,我在configureFormFields函数中未定义映射属性 add('numberOfSubproducts', 'integer',array('mapped' => false,'required' => true, 'data'=> 1)) 验证函数中的参数和约束 assertRange(['min' => 0, 'max' => 9999]) 我得到一个错误: 类path\to\entity中既不存在属性numberOfSubproducts也不存在
add('numberOfSubproducts', 'integer',array('mapped' => false,'required' => true, 'data'=> 1))
验证函数中的参数和约束
assertRange(['min' => 0, 'max' => 9999])
我得到一个错误:
类path\to\entity
中既不存在属性numberOfSubproducts
也不存在方法isNumberOfSubproducts()
如何正确定义SonataAdminBundle中无映射属性的约束?最简单的方法是将其定义为实体的属性,而不将其声明为ORM\列 使用注释,您可以这样做: 在实体类声明中:
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;
}
最简单的方法是将其定义为实体的属性,而不将其声明为ORM\列 使用注释,您可以这样做: 在实体类声明中:
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;
}
验证表单的第一种方法是按表单类型 如果需要自定义验证,也可以使用验证组(仅限于应用于组的验证组) 第二个是创建表单作为简单的调用createFormBuilder()。然后在那里输入每个字段的自定义验证
验证表单的第一种方法是按表单类型 如果需要自定义验证,也可以使用验证组(仅限于应用于组的验证组) 第二个是创建表单作为简单的调用createFormBuilder()。然后在那里输入每个字段的自定义验证
由于
约束
属性,您可以在表单中直接验证字段。看
由于
约束
属性,您可以在表单中直接验证字段。看
forgottenbas的答案是最干净的解决方案,我的答案只是一种很好的破解方法;)有时在实体中存储属性非常有用,但表单不能映射到实体或模型=)forgottenbas的答案是最干净的解决方案,我的答案只是一种很好的破解;)有时在实体中存储属性非常有用,但表单不能映射到实体或模型=)