Domanda

Non riesco ad avere widget i18n e tinyMCE su campi internazionalizzati. Se inserirò entrambi, avrò campi internazionalizzati per tutti i campi dei miei oggetti, ma nessuna minzione per loro. Avrò tanti campi tinyMCE come ho dichiarato, ma non corrisponderanno a nessuna lingua, saranno all'inizio o alla fine. Ha funzionato perfettamente prima di internazionalizzare gli oggetti

Ecco un esempio di codice:

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

}

Quindi immagino che quando utilizzo $ this- > widgetSchema ['intro'], l '& #; intro " il nome non corrisponde a tutti i18n "intro" campi. Ho provato sia 'en_intro' che 'intro_en', ma non fa nessuna magia. Quindi forse potresti aiutarmi?

È stato utile?

Soluzione

Quindi ho scoperto come farlo e ho pensato che potesse interessare qualcuno:

Invece di

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

Inserisci

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

con tutte le lingue.

Altri suggerimenti

inoltre puoi usare:

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

sposta l'etichetta e il campo i18n prima del campo introduttivo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top