У меня проблема с интернализацией форм объектов доктрины в администрировании. Формы работали отлично, но потом я добавил поддержку нескольких языков.Symfony 1.4: Обновление формы после встраивания форм i18n не работает
Схема выглядит следующим образом:
content:
actAs:
Timestampable: ~
I18n:
fields: [title, content]
columns:
parent: { type: integer }
title: { type: string(255), notnull: true, unique: true }
slug: { type: string(255), notnull: true, unique: true }
content: { type: string }
link: { type: string(255) }
ord: { type: integer }
type: { type: integer, default: 0 }
relations:
content: { onDelete: CASCADE, local: parent, foreign: id }
indexes:
parent: { fields: [parent] }
slug: { fields: [slug] }
type: { fields: [type] }
Администратор генератора:
generator:
class: sfDoctrineGenerator
param:
model_class: content
theme: admin
non_verbose_templates: true
with_show: false
singular: ~
plural: ~
route_prefix: content
with_doctrine_route: true
actions_base_class: sfActions
config:
actions: ~
fields:
title: { is_real: false }
typeFull: { label: Type }
list:
display: [=title, typeFull]
sort: ord
max_per_page: 100
filter:
class: false
form:
class: adminContentForm
edit: ~
new: ~
И, наконец, форма:
class adminContentForm extends BasecontentForm
{
public function configure()
{
unset($this['slug'], $this['ord'], $this['created_at'], $this['updated_at']);
$this->embedI18n(array('de', 'fr'));
$this->widgetSchema->setLabel('de', 'Deutsch');
$this->widgetSchema->setLabel('fr', 'French');
}
}
я не изменил класс действий.
Все работает отлично, когда я хочу создать новую запись. Но возникает странная проблема, когда я хочу обновить существующую запись: сохраняет только поля во встроенных форматах i18n (название, содержимое), а поля из основной формы остаются нетронутыми (родительский, ссылочный, тип).
Если я удаляю вложение из формы, он сохраняет родительский, linky и тип правильно. Если я добавлю обратно, он сохранит только заголовок и контент.
Вы когда-нибудь сталкивались с подобной проблемой? Я использую Symfony 1.4.17.
EDIT:
Если добавить это для отладки в processForm() метод в actions.class.php:
var_dump($form->getValue('link'));
$content = $form->save();
var_dump($content->getLink());
exit();
... Я вижу, что значение в поле ссылки был правильно отправлен, но после сохранения формы значение не сохраняется. $ form-> getValue ('link') возвращает правильное значение, но $ content-> getLink() возвращает пустую строку.
какая версия Symfony 1.4 вы используете? Какая ситуация в другом модуле, где вы используете встроенную форму i18n? Можете ли вы поместить свою схему, generator.yml и конфигурацию формы? – denys281
@ denys281 Да, конечно. Я добавил более подробную информацию. Я надеюсь, что это помогает. –
Я не помню, почему, но я обычно использую [этот учебник] (http://www.miximum.fr/tutos/449-optional-translation-form-for-i18n-objects-with-symfony-and-doctrine) для обработки поля i18n. – j0k