Comment mettre en place un « Rich Text Editor » dans un backend Symfony 1.2 doctrine ?
J’ai trouvé la solution dans un post du forum symfony, je vous donne la version originale :
http://forum.symfony-project.org/index.php/m/66906/?srch=tinymce+3+steps#msg_66906
En français et expliqué plus en détails, ça donne :
Intégrer Tiny MCE
-
Télécharger et copier :
http://tinymce.moxiecode.com/download.php
dans :/web/js/tinyMCE
-
Modifier ce fichier :
/apps/backend/config/settings.yml
all: .settings: sf_rich_text_js_dir: js/tinyMCE
Installer le plugin sfFormExtraPlugin:
symfony plugin:install sfFormExtraPlugin |
Modifier le widget sfWidgetFormTextareaTinyMCE.class.php
Il faut modifier le plugin !
/plugins/sfFormExtraPlugin/lib/widget/sfWidgetFormTextareaTinyMCE.class.php
Fichier :
<?php class sfWidgetFormTextareaTinyMCE extends sfWidgetFormTextarea { protected function configure($options = array(), $attributes = array()) { $this->addOption('theme', 'advanced'); $this->addOption('width'); $this->addOption('height'); $this->addOption('config', ''); } public function render($name, $value = null, $attributes = array(), $errors = array()) { $attributes = array_merge($this->attributes, $attributes); ... |
Utilisation
Modifier ce fichier :
/lib/form/doctrine/ContenuForm.class.php
<?php class ContenuForm extends BaseContenuForm { public function configure() { $this->widgetSchema['texte'] = new sfWidgetFormTextareaTinyMCE( array( 'width'=>550, 'height'=>350, 'config'=>'theme_advanced_disable: "anchor,image,cleanup,help"', 'theme' => sfConfig::get('app_tinymce_theme','advanced'), ), 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); } } |
Sources:

Bonjour,
J’ai une question qui peut semble bête mais je suis débutant.
J’ai essayé d’intégrer tinymce comme vous dites et tout fonctionne nikel par contre tout ce que j’ajoute s’affiche avec les balise html ( ouy é pour é) alors que tout ce qui est passé via les textarea s’affiche correctement.
Pouvez vous me dire comment régler ce truc s’il vous plait?
Merci
Bonjour miky!
lorsque tu affiches le texte tu dois faire quelque chose dans le style:
echo $objet->getTexte();
quand il y a du code html dans le champs il faut faire:
echo $objet->getTexte(ESC_RAW);
c’est une protection symfony pour ne pas interpréter le code html directement…
par exemple si un utilisateur rentre du javascript dans un commentaire, il ne faut pas qu’il soit interprété.
Est-ce que ceci réponds à ton problème?
Bonjour Thomas,
Merci de la réponse rapide.
La tout de suite je ne peux pas te donner de réponse car mon formulaire est généré par l’admin générator et m’affiche directement les enregistrements sans que j’ai eu à intervenir au niveau du code.
Je ne sais pas trop dans quel fichier regarder (même si je pense qu’il s’agit d’un fichier qui se trouve dans le répertoire lib/form).
Je cherche et je te tiens au courant
Merci
Merci.
C’est bon j’ai trouvé
Bonjour,
En suivant ce post, j’ai réussi à installer l’éditeur mais je ne vois pas comment faire pour rajouter des boutons supplémentaires tels que (ajouter une image, couleur de la police, insertion d’un media…).
Savez vous comment faire, s’il vous plait?
Merci
Il faut que tu regarde la doc de l’éditeur ce n’est plus du symfony la
Tu peux faire plus simple avec le JS en utilisant la méthode getJavascript() des widgets, en créant ton propre widget.
Ça t’évite de modifier des fichiers et tu continues à jouer avec les conventions.
Bonjour,
Problème:
J\’ai appliqué cette méthode à la lettre et tout ce que ça a changé c\’est la taille de ma textearea qui passe à sa taille par défaut.
Cause:
J\’utilise jQuery dans mon frontend et j\’envisage d\’utiliser tinyMCE dans le frontend aussi. J\’ai donc téléchargé \"TinyMCE pour jQuery\".
Solution:
Penser à inclure jQuery dans le backend !
Par exemple à l\’étape \"/lib/form/doctrine/ContenuForm.class.php\" juste avant \"$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\’;\"
mettez \"sfContext::getInstance()->getResponse()->addJavascript(\’/js/jquery-1.3.2.min.js\’);\"
A adapter bien sur suivant la version de jQuery.
Si vous n\’utilisez pas jQuery dans le backend prenez la vers \"standalone\" de TnyMCE.
En espérant faire avancer le schmilblik,
Cordialement,
Tem
Bonjour,
Merci pour le tuto ca marche nikel mais j’ai 2 petites questions :
1/ J’ai du modifier mon setting.yml : rich_text_js_dir: js/tinyMCE
dans « lib/symfony/config/config » sinon le chemin du tinyMCE était incorrect. Est ce normal ?
2/ Lorsque je veux ajouter une image je n’ai pas de bouton parcourir je dois mettre le chemin de l’image en dur. A partir de quel répertoire tinyMCE prend l’image ? Est il possible d’ajouter une image inexistante ?
Encore merci pour cet article
milk
bjr.
j’ai une question.
lorsque j’ouvre l’editeur, la description monte et se cache sou la barre des bbcodes, impossible de retrouver la description.
donc il faut que je referme, et que j’ouvre à nouveau pour voir apparaître la description.
pouvez vous mettez.?
merci. paul