2015-11-23 6 views
0

У меня есть объект languages с форматомSymfony2 ассоциативный массив в сущности

id; name 

en; English 

pl; Polish 

etc... 

И у меня есть некоторые Entity translations, что в одном столбце имеет ассоциативный массив: {мн.ч.: "Некоторые TXT в PL", ан: «Некоторые txt в EN», ...}

Все почти идеально, но я не знаю, как создать форму для редактирования такой вещи: DI пытался почти все.

Translation.orm.yml:

... 
    id: 
     id: 
      type: integer 
      generator: { strategy: AUTO } 
    fields: 
     name: 
      type: string 
      length: 255 
      unique: true 
     value: 
      type: array 
... 

ответ

1

Для нового лица необходимо подготовить массив в контроллер (перед созданием формы). Нечто подобное:

$value = array('en' => 'here en', 'pl' => 'here pl'); 
$translation->setValue($value); 
$form = $this->createForm(new TranslationType()... 

В вашем FormType:

$builder->add('value', 'collection', array(
     'type' => 'text', 
     'options' => array(
      'required' => true, 
     ), 
    ) 
); 

Это все. Если у вас есть {{ form_rest(form) }} в вашей ветке, вы увидите два дополнительных поля для переводов в вашей форме, и это будет работа. Дополнительная информация о типе коллекции here

+0

Okey, это кажется прекрасным, но я хочу иметь возможность редактировать контент в этом «массиве», и ваше решение дает мне только возможность выбора параметров? – unbreak

+1

Каждый элемент массива будет редактироваться в вашей форме без дополнительной работы. –

+0

Его работа! :) Отличный, большой, спасибо! – unbreak

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