Un resumen con los pasos para añadir un captcha en un formulario de Symfony 2. En este ejemplo utilizamos Gregwar’s Captcha Bundle .
1 – Utilizamos Composer para la instalación (hay otras formas pero esta es la mas fácil para mi). Agregar a la sección “require” de composer.json lo siguiente:
"gregwar/captcha-bundle": "dev-master"
Luego se debe hacer un update de las dependencias para que se carguen las librerías y archivos correspondientes.
2 – Habilitar el bundle en el archivo app/appKernel.php del proyecto:
<?php // app/appKernel.php public function registerBundles() { $bundles = array( // ... new Gregwar\CaptchaBundle\GregwarCaptchaBundle(), ); }
3 – Configurar el bundle en el archivo app/config/config.yml. En el proyecto he agregado lo siguiente:
gregwar_captcha: width: 200 height: 50 length: 4
De esta forma se define alto, largo y cantidad de caracteres de la imagen del captcha.
Estos parametros también se pueden definir donde se agrega el captcha enel formulario.
El listado completo se puede encontrar en : https://github.com/Gregwar/CaptchaBundle#options
4 – Agregar el captcha en la clase del formulario usado (FormularioNewType.php):
->add('captcha', 'captcha', array( 'as_url' => true, 'reload' => true,))
Se utilizaron los siguientes parametros opcionales:
– ‘reload’ permite agregar un link para refrescar y cambiar la imagen del captcha.
– ‘as_url’ si esta en true una URL será usada en el tag de la imagen y permitirá la generación del captcha.
Para habilitar la opción ‘as_url’ se debe agregar la ruta al archivo app/routing.yml:
gregwar_captcha_routing: resource: "@GregwarCaptchaBundle/Resources/config/routing/routing.yml"