Symfony: dos campos con TinyMCE en el mismo formulario

En symfony podemos utilizar fácilmente TinyMCE en un textarea gracias al plugin sfFormExtraPlugin. Una vez instalado el plugin con

symfony plugin:install sfFormExtraPlugin

debemos recordar bajar también el paquete de TinyMCE y descomprimirlo en web/js. En mi caso, lo he dejado en web/js/tiny_mce, por lo que, a continuación, he modificado el archivo view.yml de mi aplicación, especí­ficamente la lí­nea

javascript: [ tiny_mce/tiny_mce.js ]

para cargar TinyMCE en todas mis páginas. Si no quisiera cargarlo en todas, modificarí­amos el view.yml del módulo en particular donde lo queremos utilizar. Debemos recordar, así­ mismo, modificar el settings.yml de nuestra aplicación para indicar dónde se encuentra:

rich_text_js_dir: js/tiny_mce

Para utilizar el textarea con TinyMCE, sólo debemos declarar el widget correspondiente de la siguiente forma:

$this->widgetSchema['entradilla'] = new sfWidgetFormTextareaTinyMCE(
array(
'config' => sfConfig::get('app_tiny_mce_simple')
));

Lo que he hecho, en este caso, es llamar a sfWidgetFormTextareaTinyMCE con la configuración almacenada en el app.yml de nuestra aplicación, donde me he definido la variable global app_tiny_mce_simple, que contiene lo siguiente:

tiny_mce_simple: |
width: "550px",
height: "200px",
language: "es",
relative_urls: false,
convert_urls: false,
plugins: "preview, paste, advlink, fullscreen",
theme_advanced_buttons1: "bold, italic, underline, separator, justifyleft, justifycenter, justifyright, justifyfull, separator, outdent, indent, separator, pastetext, pasteword, separator, link, bullist, numlist, separator, undo, redo, selectall, separator, preview, code, fullscreen",
theme_advanced_buttons2: "",
theme_advanced_buttons3: "",
plugin_preview_width: "500",
plugin_preview_height: "600",
fullscreen_new_window: true,
theme_advanced_resize_horizontal: false,
paste_auto_cleanup_on_paste: true,

Como véis, lo íºnico que hemos hecho ha sido pasar los parámetros de configuración a TinyMCE.

El problema viene cuando queremos utilizar dos textareas con TinyMCE en el mismo formulario. De momento, en la versión 1.2.4 de Symfony, hay un pequeño “bug” (si podemos llegar a llamarlo así­), ya que al usar dos TinyMCE se pierden los ids. La solución es muy sencilla: añadir a la configuración de TinyMCE los parámetros elements con el id y mode con “exact”, como en este ejemplo:

$this->widgetSchema['entradilla'] = new sfWidgetFormTextareaTinyMCE(
array(
'config' => sfConfig::get('app_tiny_mce_simple'). ' elements: "noticia_entradilla", mode: "exact"'
));

Ya podemos utilizar todos los textareas que queramos con TinyMCE, sólo tenemos que recordar cambiar “elements” por el id correspondiente.

4 Responses

  1. esquin April 25, 2009 / 3:56 pm

    no me puedes hechar la mano para poder hacer funcionar TinyMCE y poder grabar en una pagina php

  2. adrian March 20, 2010 / 9:41 pm

    Si quisieras que todos los textarea del formulario fueran, por defecto, del tipo rich text con tinyMCE solo hay que agregar a la variable de configuración:

    mode: ‘textareas’

    y quitar del array del widget estos dos elementos

    elements: ‘noticia_entradilla’ (o lo que hubieras declarado) y
    mode: ‘exact’

    Saludos desde Argentina

  3. Francisco Labbe April 11, 2010 / 4:03 am

    no me funciono este es mi codigo

    $this->widgetSchema[‘introtext’] = new sfWidgetFormTextareaTinyMCE(
    array(
    ‘width’=>550,
    ‘height’=>350,
    ‘config’=>’theme_advanced_disable: “”‘,
    ‘theme’ => sfConfig::get(‘app_tinymce_theme’,’advanced’).’ elements: “jos_content”, mode: “exact”‘,
    ),
    array(
    ‘class’ => ‘tiny_mce’
    )
    );

    ojala me pudieras ayudar.

  4. Inmzombie April 6, 2011 / 12:29 am

    Hola te cuento que me re sirvio tu post pero me llevo un tiempo que en relaidad elements iba concatenado a la app.yml lo correcto serí­a:
    $this->widgetSchema[‘entradilla’] = new sfWidgetFormTextareaTinyMCE(
    array(
    ‘config’ => sfConfig::get(‘app_tiny_mce_simple’. ‘ elements: “noticia_entradilla”, mode: “exact”‘)
    ));

    Un gusto espero darle la mano a algún despistado ;) como yo. Un gusto.

Leave a Reply

Your email address will not be published. Required fields are marked *