Соната Admin Bundle выбор ошибки проверки

1

Я пытаюсь отредактировать или добавить продукт 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');
}
  • 0
    Отредактировано: * @ORM \ Column (имя = "условие_продукта", тип = "строка", длина = 10)
  • 0
    Последнее редактирование не решает основную проблему.
Теги:
sonata-admin

3 ответа

1

Doctrine ожидает получить строку, но вы передаете целое число в качестве значения выбранного поля.
Это то, что вы проходите:

 return array(
    0 => 'new',
    1 => 'used'
);

Что вам нужно (например):

 return array(
    '0' => 'new',
    '1' => 'used'
);

Ошибка инициируется проверкой длины в поле.

  • 0
    Я извиняюсь еще раз, но это тоже не работает. Ничего не изменилось. Я пытался изменить тип «условие» на целое число и после этого ваш массив. Может быть, это ошибка Sonata Admin в Symfony 2.7? Кто-нибудь может проверить это, потому что я новичок Symfony. Сейчас я использую return array( 'new' => 'new', 'used' => 'used' ); и 'choices_as_values' => true но это не хорошее решение
1

попробуй это:

//..

->add('condition', 'entity', array(
                'class' => YourAppBundle:YourEntityProduct
                'label' => 'Stan',
      ));

..//

  • 0
    Я сожалею, но это сделать список всего продукта, а не только его состояние. Я использовал 'choices_as_values' => true, и это работает, но для такого текста, как "новый" или "использованный", я выбрал число 0 или 1.
0

Sonata использует значения в качестве меток для отображения и Keys как значения (переданные в модель). Чтобы получить то, что вы хотите, массив должен быть как массив ('new' => 'new', 'used' => 'used');

Ещё вопросы

Сообщество Overcoder
Наверх
Меню