Я пытаюсь отредактировать или добавить продукт Sonata Admin Bundle, но валидатор всегда отклоняет поле "условие", потому что "Вы выбрали не правильный выбор".
Класс администратора
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('name', 'text', array('label' => 'Nazwa'))
->add('condition', 'choice', array(
'choices' => Product::getConditions(),
'label' => 'Stan',
));
}
сущность
/**
* @Assert\Choice(callback = "getConditions")
* @ORM\Column(type="string", length=10)
*/
protected $condition;
public static function getConditions()
{
return array('new', 'used');
}
Doctrine ожидает получить строку, но вы передаете целое число в качестве значения выбранного поля.
Это то, что вы проходите:
return array(
0 => 'new',
1 => 'used'
);
Что вам нужно (например):
return array(
'0' => 'new',
'1' => 'used'
);
Ошибка инициируется проверкой длины в поле.
return array( 'new' => 'new', 'used' => 'used' );
и 'choices_as_values' => true
но это не хорошее решение
попробуй это:
//..
->add('condition', 'entity', array(
'class' => YourAppBundle:YourEntityProduct
'label' => 'Stan',
));
..//
Sonata использует значения в качестве меток для отображения и Keys как значения (переданные в модель). Чтобы получить то, что вы хотите, массив должен быть как массив ('new' => 'new', 'used' => 'used');