Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Validation 如何验证无映射属性_Validation_Symfony_Sonata Admin - Fatal编程技术网

Validation 如何验证无映射属性

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也不存在

我在configureFormFields函数中未定义映射属性

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的答案是最干净的解决方案,我的答案只是一种很好的破解;)有时在实体中存储属性非常有用,但表单不能映射到实体或模型=)