2009-12-01 6 views
2

Je n'arrive pas à avoir des widgets i18n et tinyMCE sur des champs internationalisés. Si je mets les deux, j'aurai des champs internationalisés pour tous les champs de mes objets, mais pas de minuscules MCE pour eux. J'aurai autant de champs minuscules que j'ai déclaré, mais ils ne correspondront à aucune langue, ils seront au début ou à la fin. Il a parfaitement fonctionné avant internationalisé les objetsSymfony: Comment utiliser les widgets avec des formulaires i18n dans le backend (doctrine)

Voici un exemple de code:

// 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); 

} 

donc je suppose que quand j'utilise $ this-> widgetSchema [ 'intro], le nom "intro" ne correspond pas à tous les i18n "intro" champs. J'ai essayé 'en_intro' et 'intro_en', mais ça ne fait pas de magie. Alors peut-être pourriez-vous m'aider?

Répondre

1

donc j'ai trouvé comment faire cela et je pense qu'il pourrait intéresser quelqu'un:

Au lieu de

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

Mettre

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

avec toutes les langues.

1

vous pouvez également utiliser:

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

déplacer l'étiquette i18n et sur le terrain avant de champ intro.

Questions connexes