2015-01-05 3 views
2

У меня есть форма, которую я создаю с использованием класса формы. Одно поле этой формы - country_id, которое дает мне идентификатор страны в текстовом поле.Как добавить сопоставление в форму

Однако я хочу создать поле выбора, а не только со всеми идентификаторами, а скорее с названиями стран, отображаемыми этими идентификаторами.

У меня есть таблица в базе данных, отображающая идентификаторы страны для имен. Однако форма использует только одну сущность, а не эту.

Как я могу создать этот выбор, используя эту другую таблицу здесь? Как я могу это решить?

Спасибо!

EDIT:

public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder->add('name', 'text', ['required' => false]) 
      ->add('address', 'text', ['required' => false]) 
      ->add('zipCode', 'text', ['required' => false]) 
      ->add('city', 'text', ['required' => false]); 

     $builder->add('country', 'entity', [ 
      'class' => 'AcmeBundle:Country', 
      'property' => 'shortName', 
      'required' => false, 
     ]); 

     // $builder->add('country', 'text', ['required' => false]); 

     $builder->add('number', 'text', ['required' => false]); 
    } 

Вот и весь метод внутри, давайте назовем его, Foo сущность. Он генерирует правильный HTML с идентификаторами как значения, но все еще есть те ошибки, о которых я упоминал в комментарии.

+0

Вы добавили FormType не ваш Entity. Пожалуйста, добавьте это также. – ferdynator

+0

Объект создан от db – khernik

ответ

2

Вам нужен entity Field Type. Ваш FormType должен выглядеть следующим образом:

$builder->add('country', 'entity', array(
    'class' => 'YourBundle:Country', 
    'property' => 'name', 
)); 

Checkout the docs for more info.

+0

Отлично! Но как я могу сопоставить эти имена с id, чтобы я мог вставить его в объект в базовой форме? – khernik

+2

То, что означает '' свойство '=>' name''. Он гарантирует, что будет отображаться имя страны, но идентификатор будет сохранен в базе данных – ferdynator

+0

Истина, и все значения верны, но я получаю, что «объект типа Contry не может быть преобразован в int». Почему это так? – khernik

Смежные вопросы