Pregunta

No puedo lograr tener widgets i18n y tinyMCE en campos internacionalizados. Si pongo ambos, tendré campos internacionalizados para todos los campos de mis objetos, pero no tinyMCE para ellos. Tendré tantos pequeños campos MCE como he declarado, pero no corresponderán a ningún idioma, estarán al principio o al final. Funcionó perfectamente antes de internacionalizar los objetos

Aquí hay un ejemplo de código:

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

}

Entonces, supongo que cuando uso $ this- > widgetSchema ['intro'], la " intro " el nombre no corresponde a toda la introducción de i18n '' campos. Intenté 'en_intro' e 'intro_en', pero no hace ninguna magia. Entonces, ¿podrías ayudarme?

¿Fue útil?

Solución

Así que encontré cómo hacer esto y pensé que podría interesarle a alguien:

En lugar de

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

Poner

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

con todos los idiomas.

Otros consejos

también puedes usar:

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

mueva la etiqueta y el campo i18n al campo de introducción anterior.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top