Skip to content

Symfony: dos campos con TinyMCE en el mismo formulario

2009 marzo 24
tags:
by ramses

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 leave one →
  1. abril 25, 2009

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

  2. marzo 20, 2010

    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 permalink
    abril 11, 2010

    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 permalink
    abril 6, 2011

    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

Note: You can use basic XHTML in your comments. Your email address will never be published.

Subscribe to this comment feed via RSS