Symfony: как использовать виджеты с формами i18n в бэкэнде (доктрина) - PullRequest
2 голосов
/ 01 декабря 2009

Мне не удается разместить виджеты 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-> widgetSchema ['intro'], имя "intro" не соответствует всем полям i18n "intro". Я пробовал оба «en_intro» и «intro_en», но это не делает никакой магии. Так может ты мне поможешь?

Ответы [ 2 ]

1 голос
/ 16 марта 2010

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

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

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

1 голос
/ 02 декабря 2009

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

Вместо

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

Положить

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

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

...