Как проверить не-сопоставленное свойство
Я определил свойство no-mapped в функции configureFormFields
add('numberOfSubproducts', 'integer',array('mapped' => false,'required' => true, 'data'=> 1))
и ограничение в функции проверки
assertRange(['min' => 0, 'max' => 9999])
и я получаю ошибку:
Ни одно свойство numberOfSubproducts
ни метод getNumberOfSubproducts()
ни метод isNumberOfSubproducts()
существует в классе path\to\entity
Как правильно определить ограничение для свойства no-mapped в SonataAdminBundle?
3 ответа
Вы можете проверить поле непосредственно в форме, благодаря constraints
имущество. Смотрите официальную документацию.
$builder
->add('lastName', 'text', array(
'constraints' => array(
new NotBlank(),
new Length(array('min' => 3)),
),
))
Самый простой способ - определить его как свойство вашей сущности, не указывая его как 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;
}
Первый способ проверки формы - FormType http://symfony.com/doc/2.2/book/forms.html
А также вы можете использовать группы проверки, если вы хотите настраиваемую проверку (только те, которые применены к группе) http://symfony.com/doc/2.2/book/forms.html
Во-вторых, создать форму как простой вызов createFormBuilder(). И введите туда свою пользовательскую проверку для каждого поля http://symfony.com/doc/2.2/book/forms.html