desarrollo rápido con php y symfony (vi): los formularios
DESCRIPTION
Explicación del sistema de formularios de Symfony y su unión con el modeloTRANSCRIPT
Symfony
David J.Brenes
Martínez
Framework deFormularios
Formulariosdel modelo
Forms en lavista
Referencias,Créditos yLicencia
Desarrollo rápido con PHP y Symfony(VI) Los formularios
David J. Brenes Martínez
Curso de Extensión UniversitariaDesarrollo web avanzado
Universidad de Oviedo
2010/03/22
Symfony
David J.Brenes
Martínez
Framework deFormularios
Formulariosdel modelo
Forms en lavista
Referencias,Créditos yLicencia
Elementos de los formularios
Formulario = cojunto de campos que deben cumplirunas restriccionesEstos campos se envían y son procesados por elservidor
Symfony
David J.Brenes
Martínez
Framework deFormularios
Formulariosdel modelo
Forms en lavista
Referencias,Créditos yLicencia
Widgets
Parte visual de los formulariosDefinen cómo se solicitan los datos de los formularios(textareas, campos de texto. . . )Las clases son sfWidgetForm*
Symfony
David J.Brenes
Martínez
Framework deFormularios
Formulariosdel modelo
Forms en lavista
Referencias,Créditos yLicencia
Validadores
Se encargan de validar los datos de entradaValidan fechas, emails, URLs, expresiones regulares. . .Las clases son sfValidator*Permiten personalizar textos de error
Symfony
David J.Brenes
Martínez
Framework deFormularios
Formulariosdel modelo
Forms en lavista
Referencias,Créditos yLicencia
Ejemplo de formulario
c lass ContactForm extends sfForm{
p u b l i c f u n c t i o n con f igu re ( ){
$ th is −>setWidgets ( array (’ emai l ’ => new sfWidgetFormInputText ( ) ,’ message ’ => new sfWidgetFormTextarea ( ) ,
) ) ;
$ th i s −>s e t V a l i d a t o r s ( array (’ emai l ’ => new s fV a l i d a t o rE m a i l ( ) ,’ message ’ => new s f V a l i d a t o r S t r i n g (
array ( ’ max_length ’ => 255)) ,
) ) ;}
}
Symfony
David J.Brenes
Martínez
Framework deFormularios
Formulariosdel modelo
Forms en lavista
Referencias,Créditos yLicencia
Procesando el formulario
El método getErrorSchema() devuelve los errores delformularioLos metodos getValue($campo) y getValues()devuelven los valores de los campos
Symfony
David J.Brenes
Martínez
Framework deFormularios
Formulariosdel modelo
Forms en lavista
Referencias,Créditos yLicencia
Formularios del modelo
Doctrine permite crear formularios para las clases delmodeloLa tarea doctrine:build –forms los creaEstos formularios automatizan la tarea de crear objetosTambién facilitan la creación de formularios de edición
Symfony
David J.Brenes
Martínez
Framework deFormularios
Formulariosdel modelo
Forms en lavista
Referencias,Créditos yLicencia
Personalización del formulario
Estos formularios muestran todos los camposAlgunos (created_at) se rellenan de forma automática yno interesa que los envien los usuariosSe puede especificar que campos ignorar
Symfony
David J.Brenes
Martínez
Framework deFormularios
Formulariosdel modelo
Forms en lavista
Referencias,Créditos yLicencia
Ejemplo de formulario
c lass CarForm extends BaseCarForm{
p u b l i c f u n c t i o n con f igu re ( ){
unset ($ t h i s [ ’ c reated_at ’ ] ,$ t h i s [ ’ updated_at ’ ] ,$ t h i s [ ’ exp i res_a t ’ ] ,$ t h i s [ ’ i s _ a c t i v a t e d ’ ]
) ;
$ th i s −>useFie lds ( array ( " nombre " ," ma t r i cu la " ) ) ;
}}
Symfony
David J.Brenes
Martínez
Framework deFormularios
Formulariosdel modelo
Forms en lavista
Referencias,Créditos yLicencia
Añadiendo validaciones
Algunas validaciones se obtienen del fichero deesquemaOtras deben añadirse en la configuración del formulario
Symfony
David J.Brenes
Martínez
Framework deFormularios
Formulariosdel modelo
Forms en lavista
Referencias,Créditos yLicencia
Añadiendo validaciones
$ th is −>val idatorSchema [ ’ emai l ’ ]= new s fVa l ida to rAnd ( array (
$ th is −>val idatorSchema [ ’ emai l ’ ] ,new s f V a l i d a t o r E ma i l ( ) ,
) ) ;
Symfony
David J.Brenes
Martínez
Framework deFormularios
Formulariosdel modelo
Forms en lavista
Referencias,Créditos yLicencia
Restringiendo la creación de formularios
Puede haber clases que no te interesen para lacreación de formulariosEn la defnición del esquema puede evitarse la creaciónde formularios
Symfony
David J.Brenes
Martínez
Framework deFormularios
Formulariosdel modelo
Forms en lavista
Referencias,Créditos yLicencia
Restringiendo la creación de formularios
Insurance :op t ions :
symfony :form : fa lse
Symfony
David J.Brenes
Martínez
Framework deFormularios
Formulariosdel modelo
Forms en lavista
Referencias,Créditos yLicencia
Procesando el formulario
Los formularios de Doctrine permiten grabar losobjetos que representanDebemos crear un formulario, indicarle cuales son losdatos que recibe y grabarlos
Symfony
David J.Brenes
Martínez
Framework deFormularios
Formulariosdel modelo
Forms en lavista
Referencias,Créditos yLicencia
Procesando el formulario
$form = new CarForm ( ) ;$form−>bind (
$request−>getParameter ($form−>getName ( )
) ,$request−>g e t F i l e s (
$form−>getName ( ))
) ;i f ( $form−>i s V a l i d ( ) ){
$car = $form−>save ( ) ;}
Symfony
David J.Brenes
Martínez
Framework deFormularios
Formulariosdel modelo
Forms en lavista
Referencias,Créditos yLicencia
Incorporando el formulario a la vista
El formulario dispone de métodos para generar supropio HTMLDelega en los widgets la generación de su HTML
Symfony
David J.Brenes
Martínez
Framework deFormularios
Formulariosdel modelo
Forms en lavista
Referencias,Créditos yLicencia
Forms en la vista
<?php echo fo rm_tag_for ( $form , $u r l _des t i no )echo $form ?>
</ form >
Symfony
David J.Brenes
Martínez
Framework deFormularios
Formulariosdel modelo
Forms en lavista
Referencias,Créditos yLicencia
Referencias
Symfony Project: www.symfony-project.orgThe Symfony Reference Book: http://www.symfony-project.org/reference/1_4/en/
Practical Symfony:http://www.symfony-project.org/jobeet/1_4/Doctrine/en/
The Definitive Guide to Symfony:http://www.symfony-project.org/book/1_2/
Symfony
David J.Brenes
Martínez
Framework deFormularios
Formulariosdel modelo
Forms en lavista
Referencias,Créditos yLicencia
Licencia
Estas transparencias se publican bajo licencia CreativeCommons y se pueden redistribuir o modificar bajo lassiguientes condiciones:
Se dé reconocimiento al autor de estas transparencias.No se use con propósitos comerciales.Se distribuya con la misma licencia.
Texto de la licencia: http://creativecommons.org/licenses/by-nc-sa/3.0/