Ya he hablado acerca del sfFormExtraPlugin en algunos artículos anteriores. Hoy, les presentare este plugin mas a fondo.

¿Qué es?

El sfFormExtraPlugin es un plugin mantenido por el symfony core team.

Contiene una gran cantidad de interesantes widgets, validadores, y forms que son muy útiles pero que no están en el núcleo porque tienen dependencias de terceros o su uso es demasiado específico.

¿Qué tiene adentro?

ReCaptcha widget and validator

sfWidgetFormReCaptcha

sfWidgetFormReCaptcha emplea ReCaptcha para mostrar un captcha y sfValidatorReCaptcha es el validador asociado.

Para usarlos, necesitas crear una clave del API en el sitio de ReCaptcha.

El widget toma la ReCaptcha public_key como una opción, mientras que el validador toma la ReCaptcha private_key:

$this->widgetSchema['captcha'] = new sfWidgetFormReCaptcha(array(
  'public_key' => sfConfig::get('app_recaptcha_public_key')

));
 
$this->validatorSchema['captcha'] = new sfValidatorReCaptcha(array(

  'private_key' => sfConfig::get('app_recaptcha_private_key')
));
 

Como no es posible cambiar los nombres de los campos del ReCaptcha, necesitaras agregarlos manualmente when cargues un form de la petición HTTP.

He aquí un típico uso cuándo embebes un captcha en un form con un formato del nombre contact[%s]:

$captcha = array(
  'recaptcha_challenge_field' => $request->getParameter('recaptcha_challenge_field'),
  'recaptcha_response_field'  => $request->getParameter('recaptcha_response_field'),


);
$this->form->bind(array_merge($request->getParameter('contact'), array('captcha' => $captcha)));


 

La siguiente tabla resume todas las opciones disponibles para el widget sfWidgetFormReCaptcha:

Opción
Descripción
public_key La clave publica ReCaptcha
use_ssl Si usas SSL o no (false esta por defecto)
server_url La URL para la HTTP API
server_url_ssl La URL para la HTTPS API (cuándo use_ssl es true)

Y este es para sfValidatorReCaptcha:

Opción Descripción
private_key La clave privada ReCaptcha
remote_addr La dirección remota del usuario
server_host El Host servidor ReCaptcha
server_port El puerto servidor ReCaptcha
server_path El path servidor ReCatpcha
server_timeout El timeout to usado cuándo contacta el servidor ReCaptcha

HTML WYSIWYG editor

sfWidgetFormTextareaTinyMCE

sfWidgetFormTextareaTinyMCE es un editor HTML WYSIWYG basado en el popular TinyMCE.

El widget JavaScript es configurado con valores predeterminados sensibles,pero se puede cambiar unsado una opción config:

$this->widgetSchema['content'] = new sfWidgetFormTextareaTinyMCE(array(

  'width'  => 550,
  'height' => 350,
  'config' => 'theme_advanced_disable: "anchor,image,cleanup,help"',


));
 

La opcion config deben ser pares JavaScript de claves/valores.

Opción Descripción
theme La plantilla Tiny MCE (por defecto)
width El ancho del widget en píxeles
height El alto del widget en píxeles
config El JavaScript de configuración

Rich date widget

sfWidgetFormJQueryDate

sfWidgetFormJQueryDate muestra un lindo widget para dias, basado en el JQuery.

En cuanto al widget TinyMCE, está configurado por defecto con datos sensibles los cuales pueden ser sobreescritos gracias a la opción config:

$this->widgetSchema['published_at'] = new sfWidgetFormJQueryDate(array(

  'config' => '{}',
));
 

Aquí está la lista de opciones del widget:

Opción Descripción
image El path de la imagen que muestra el widget (false esta por defecto)
config Un array JavaScript de configuración
culture La Cultura a usar cuando se muestre el widget

Language form

sfFormLanguage

sfFormLanguage es un form que permite a los usuarios cambiar su cultura. Ya he publicado un articulo sobre sfFormLanguage, por lo que no voy describir lo de nuevo.

Double list widget

sfWidgetFormSelectDoubleList

sfWidgetFormSelectDoubleList es un widget que muestra múltiples opciones como una doble lista. Este widget ya ha sido explicado en un articulo anterior.

La siguiente tabla describe todas las opciones disponibles:

Opción Descripción
choices Un array de las posibles opciones
class La clase principal del widget
class_select La clase para los dos select tags
label_unassociated La etiqueta para unassociated
label_associated La etiqueta para associated
unassociate El HTML para el enlace unassociate
associate El HTML para el enlace associate
template La plantilla HTML a usar para mostrar este widget
Los marcadores disponibles son:
label_associated, label_unassociated,
associate, unassociate,
associated, unassociated,
y class

Autocompleter widget

sfWidgetFormPropelJQueryAutocompleter sfWidgetFormPropelJQueryAutocompleter sfWidgetFormPropelJQueryAutocompleter

sfWidgetFormJQueryAutocompleter es un widget autocompletado basado en JQuery.

sfWidgetFormPropelJQueryAutocompleter extiende de sfWidgetFormJQueryAutocompleter y relaciona el widget a un modelo Propel.

Este widget ya ha sido explicado en un articulo anterior.

La siguiente tabla describe todas las opciones disponibles:

Opción Descripción
url La URL a cargarl para obtener las opciones a usar
config Un array JavaScript que configura el widget autocompletado JQuery
value_callback Un callback que convierte el valor antes de que se muestre

Contribuir

sfFormExtraPlugin todavía es joven y más widgets, validadores, y forms se añadirán en un futuro próximo, así que permanezcan atentos.

Si estas desarrollando un widget o validador para tu proyecto y quieres compartirlo con la comunidad symfony, crea un plugin de ello, o contribuye con este en el plugin sfFormExtraPlugin.

Este tutorial es el primer articulo de una serie nuevos plugins.

Si eres el desarrollador de un plugin o el usuario de un plugin, y quiere propagar la idea acerca de el, escribe un tutorial (en el formmato markdown), y enviamelo, y los mejores serán publicados en este blog en las próximas semanas.



La presente, es una traducción al castellano realizada por Roberto G. Puentes Diaz, sobre el artículo spice-up-your-forms-with-some-nice-widgets-and-validators de Fabien Potencier.