Генератор администратора доктрины Symfony 1.4 отображает поля формы i18n

Моя проблема в том, что я использую генератор администратора для модели с некоторыми дополнительными виртуальными атрибутами, которые мне нужно иметь в определениях генератора.yml:

config:
  form:
    display: [name, design_by, description, _images, add_image, _videos, add_video]

Но атрибут «описание» находится в режиме i18n модели доктрины, он больше не существует в объекте базовой модели — перемещен в модель i18n. Поэтому я получаю логическую ошибку «Описание виджета не существует».

Я пробовал что-то вроде:

config:
  form:
    display: [description_i18n]

но не нашел решения.

Когда я вырезаю определение отображения формы по умолчанию, форма начинает работать, но в ней отсутствуют мои дополнительные поля _images, add_image, _videos, add_video, поэтому мне нужно иметь определение там.

Гугл тоже не помог...

Кто-нибудь знает, как определить виджеты i18n в генератор.yml? СПАСИБО!


person palmic    schedule 16.12.2010    source источник


Ответы (2)


У меня такая же проблема.

Углубившись в код, я увидел, что виджеты i18n сгруппированы в массивы, где ключ — это название культуры.

Поэтому я попытался установить их в свой генератор.yml:

form:
  display:
    'Name / Description (with translations)': [en, es, fr, it]

И успехов!!!

person josemi    schedule 22.05.2011
comment
Мне пришлось разделить другие поля на отдельные блоки, такие как main: [name, design_by], ваш yml ниже, а затем заблокировать данные с остальными, но это действительно работает. - person palmic; 03.01.2012

Я делал это раньше, и я не уверен, что это тот ответ, который вы ищете, но для того, чтобы Symfony отображала поля i18n в генераторе администратора, вам нужно добавить строку в каждый класс формы в папке вашего проекта/библиотеки.

Например, если у вас есть класс Form в: <myproject>/lib/form/doctrine/MyForm.class.php

Добавьте это в метод configure следующим образом:

  public function configure()
  {
    parent::configure();

    // Add this line.
    $this->embedI18n(array('en', 'de'));
    ...
  }

Измените en и de на установленные вами языки. Вам нужно сделать это для каждого объекта формы, который у вас есть.

person Peter D    schedule 20.12.2010
comment
Прочитайте последнюю строку моего вопроса еще раз - person palmic; 21.12.2010
comment
Ну связала. И я никогда не слышал о виджете i18n. Удачи. - person Peter D; 21.12.2010
comment
КСТАТИ. решил мою проблему, разрешив настройку по умолчанию (~) генератора.yml и установив дополнительные виджеты для моих специальных атрибутов в классе формы, но это не решение этой проблемы, поэтому я позволю ей открыться. THX за ваш ответ в любом случае! - person palmic; 22.12.2010