Symfony: как использовать виджеты с формами i18n в бэкэнде (доктрина)

StackOverflow https://stackoverflow.com/questions/1824788

Вопрос

Мне не удается разместить виджеты i18n и tinyMCE на интернационализированных полях. Если я поставлю оба, у меня будут интернационализированные поля для всех полей моих объектов, но для них не будет tinyMCE. У меня будет столько полей tinyMCE, сколько я объявил, но они не будут соответствовать ни одному языку, они будут в начале или в конце. Он отлично работал до того, как я интернационализировал объекты.

Вот пример кода:

// config / doctrine / schema.yml

MyObject:
  actAs:
    I18n:
      fields: [title, subtitle, intro, text]
  columns:
    title: {type: string(500)}
    subtitle: {type: string(500)}
    intro: {type: string(4000)}
    text: {type: string(16000)}

// lib / form / doctrine / MyObject.class.php

public function configure()
{

$this->embedI18n(array('en', 'fr', 'es'));
$this->widgetSchema->setLabel('fr', 'Français');
$this->widgetSchema->setLabel('en', 'Anglais');
$this->widgetSchema->setLabel('es', 'Español');

$this->widgetSchema['intro'] =  new sfWidgetFormTextareaTinyMCE(
  array(
    'width'=>600,
    'height'=>100,
    'config'=>'theme_advanced_disable: "anchor,image,cleanup,help"',
    'theme'   =>  sfConfig::get('app_tinymce_theme','simple'),
  ),
  array(
    'class'   =>  'tiny_mce'
  )
);

$this->widgetSchema['text'] =  new sfWidgetFormTextareaTinyMCE(
  array(
    'width'=>600,
    'height'=>100,
    'config'=>'theme_advanced_disable: "anchor,image,cleanup,help"',
    'theme'   =>  sfConfig::get('app_tinymce_theme','simple'),
  ),
  array(
    'class'   =>  'tiny_mce'
  )
);

$js_path = sfConfig::get('sf_rich_text_js_dir') ? '/'.sfConfig::get('sf_rich_text_js_dir').'/tiny_mce.js' : '/sf/tinymce/js/tiny_mce.js';
sfContext::getInstance()->getResponse()->addJavascript($js_path);

}

Поэтому я предполагаю, что когда я использую $ this-> gget; widgetSchema ['intro'], " intro " имя не соответствует всем i18n < intro " поля. Я пробовал оба «en_intro» и «intro_en», но это не делает никакой магии. Так может ты мне поможешь?

Это было полезно?

Решение

Итак, я нашел, как это сделать, и подумал, что это может кого-то заинтересовать:

Вместо

 $this->widgetSchema['intro'] = ...

Положите

$this->widgetSchema['en']['intro'] = ...

со всеми языками.

Другие советы

также вы можете использовать:

$this->widgetSchema->moveField('en',sfWidgetFormSchema::BEFORE,'intro');

переместите метку и поле i18n до поля ввода.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top