Symfony: So verwenden Widgets mit i18n Formen in Backend (Lehre)
-
22-07-2019 - |
Frage
Ich kann nicht verwalten sowohl i18n und tinyMCE Widgets auf internationalisierte Felder haben. Wenn ich beide setzen, werde ich internationalisierte Felder für alle meine Objekte Felder, aber keine tinyMCE für sie. Ich werde so viele tinyMCE Felder hat, wie ich erklärte, aber thew wird nicht an Sprache entspricht, werden sie am Anfang oder am Ende sein. Es funktionierte perfekt, bevor ich die Objekte internationalisiert
Hier ist ein Beispiel für den Code ein:
// config / Lehre / 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 / Lehre / 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);
}
Also ich denke, wenn ich $ this- verwenden> widgetSchema [ 'Intro'], das "Intro" Name entspricht nicht alle i18n "Intro" Felder. Ich habe versucht, sowohl ‚en_intro‘ und ‚intro_en‘, aber es macht keine Magie tun. Vielleicht könnten Sie mir helfen?
Lösung
So fand ich, wie dies zu tun, und ich dachte, es könnte jemanden interessieren sollte:
Anstelle von
$this->widgetSchema['intro'] = ...
Setzen Sie
$this->widgetSchema['en']['intro'] = ...
mit allen Sprachen.
Andere Tipps
Auch können Sie:
$this->widgetSchema->moveField('en',sfWidgetFormSchema::BEFORE,'intro');
bewegen Sie das i18n-Label und Feld vor Intro Feld.