desarrollo rápido con php y symfony (vi): los formularios

19
Symfony David J. Brenes Martínez Framework de Formularios Formularios del modelo Forms en la vista Referencias, Créditos y Licencia Desarrollo rápido con PHP y Symfony (VI) Los formularios David J. Brenes Martínez Curso de Extensión Universitaria Desarrollo web avanzado Universidad de Oviedo 2010/03/22

Upload: david-j-brenes

Post on 20-Jan-2015

2.962 views

Category:

Documents


2 download

DESCRIPTION

Explicación del sistema de formularios de Symfony y su unión con el modelo

TRANSCRIPT

Page 1: Desarrollo rápido con PHP y Symfony (VI): Los formularios

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

Page 2: Desarrollo rápido con PHP y Symfony (VI): Los formularios

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

Page 3: Desarrollo rápido con PHP y Symfony (VI): Los formularios

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*

Page 4: Desarrollo rápido con PHP y Symfony (VI): Los formularios

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

Page 5: Desarrollo rápido con PHP y Symfony (VI): Los formularios

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)) ,

) ) ;}

}

Page 6: Desarrollo rápido con PHP y Symfony (VI): Los formularios

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

Page 7: Desarrollo rápido con PHP y Symfony (VI): Los formularios

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

Page 8: Desarrollo rápido con PHP y Symfony (VI): Los formularios

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

Page 9: Desarrollo rápido con PHP y Symfony (VI): Los formularios

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 " ) ) ;

}}

Page 10: Desarrollo rápido con PHP y Symfony (VI): Los formularios

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

Page 11: Desarrollo rápido con PHP y Symfony (VI): Los formularios

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 ( ) ,

) ) ;

Page 12: Desarrollo rápido con PHP y Symfony (VI): Los formularios

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

Page 13: Desarrollo rápido con PHP y Symfony (VI): Los 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

Page 14: Desarrollo rápido con PHP y Symfony (VI): Los formularios

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

Page 15: Desarrollo rápido con PHP y Symfony (VI): Los formularios

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 ( ) ;}

Page 16: Desarrollo rápido con PHP y Symfony (VI): Los formularios

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

Page 17: Desarrollo rápido con PHP y Symfony (VI): Los formularios

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 >

Page 18: Desarrollo rápido con PHP y Symfony (VI): Los formularios

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/

Page 19: Desarrollo rápido con PHP y Symfony (VI): Los formularios

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/