Symfony parte 7

1.775 visualizaciones

Publicado el

Desarrollando Formularios en Symfony.
Subframework Symfony

Publicado en: Tecnología
0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
1.775
En SlideShare
0
De insertados
0
Número de insertados
41
Acciones
Compartido
0
Descargas
6
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.
  • setWidgets recibe como parametro un arreglo asociativo. sfWdigetFormInput = campo texto input sfWidgetFormTextarea() = textarea.
  • Cuando se muestra un objeto usando <?php echo $formulario?> el intérprete de PHP muestra la representación en texto del objeto $formulario. Para convertir el objeto en una cadena de texto, PHP intenta ejecutar el método mágico __toString(). Todos los widgets implementan este método para convertir el objeto en código HTML
  • No utilizamos propel ni agregamos el tercer argumento porque estamos creando un módulo que no pertenece al modelo. Se acuerda que yo les comentaba que el 90 % de las veces un módulo está relacionado a una tabla, pero no siempre debe ser así. O La otra alternativa es que cree el módulo a mano dentro del directorio modules de la aplicación.
  • Al crear un formulario mediante new ContactoForm(), se invoca inmediatamente el método configure definido anteriormente.
  • Al crear un formulario mediante new ContactoForm(), se invoca inmediatamente el método configure definido anteriormente.
  • Cuando se muestra un objeto usando <?php echo $formulario?> el intérprete de PHP muestra la representación en texto del objeto $formulario. Para convertir el objeto en una cadena de texto, PHP intenta ejecutar el método mágico __toString(). Todos los widgets implementan este método para convertir el objeto en código HTML
  • Cuando se muestra un objeto usando <?php echo $formulario?> el intérprete de PHP muestra la representación en texto del objeto $formulario. Para convertir el objeto en una cadena de texto, PHP intenta ejecutar el método mágico __toString(). Todos los widgets implementan este método para convertir el objeto en código HTML
  • Acá como estamos haciendo un redirect debemos pasar las variables de la forma get para la otra acción. Si hubiesemos utilizado un forward, la otra acción hubiese tenido disponible la petición sin enviar esa información. http_build_query es una función propia de PHP que genera una cadena de texto de tipo query string a partir de los parámetros pasados a través de un array y con sus valores correctamente codificados para incluirlos en una URL.
  • En este momento, el formulario con el método BIND asocia el formulario con los datos introducidos por el usuario y ejecuta el mecanismo de validación. En este caso, el formulario se encuentra en el estado asociado. Y en el método que recibo ejecuto el BIND que asocia y ejecuta el método validación. Si el método isValid() es true se rederige todo el contenido hacia la otra acción gracias. getValues, nos entrega los datos validador y limpios porque eso hace el método de validación.
  • 1: foreach ($formulario->getGlobalErrors() as $nombre => $error):?> echo $nombre.’ : .$error?>‘ 2 : foreach($formulario[‘email’]->getError() as $error):?>
  • Symfony parte 7

    1. 1. Symfony Parte 7 Rodrigo Miranda [email_address] [email_address] http://www.rodrigomiranda.cl
    2. 2. Rodrigo Miranda Blog: www.rodrigomiranda.cl Formularios
    3. 3. Rodrigo Miranda Blog: www.rodrigomiranda.cl Tipos de Formularios: 1.- Los formularios que no dependen del modelo de datos. 2.- Los formularios Propel. ./symfony propel:build-forms
    4. 4. Rodrigo Miranda Blog: www.rodrigomiranda.cl Los formularios NO propel
    5. 5. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Los formularios NO Propel son objetos que heredan de la clase sfForm . </li></ul>
    6. 6. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Para construir un formulario debemos añadir widgets y validadores al método configure de la clase Formulario que trabajamos. El método configure es invocado automáticamente desde el constructor de la clase sfForm . </li></ul>
    7. 7. Rodrigo Miranda Blog: www.rodrigomiranda.cl
    8. 8. Rodrigo Miranda Blog: www.rodrigomiranda.cl Pasos: 1.- Crear un archivo php para clase del Formulario. 2.- Configurar el formulario (añadir widget y validadores) 3.- Crear un módulo para ver nuestro ejemplo
    9. 9. Rodrigo Miranda Blog: www.rodrigomiranda.cl Paso 1 y 2
    10. 10. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Cuando se utiliza el método setWidgets , Symfony crea un objeto de tipo sfWidgetFormSchema ($this->widgetSchema) que representa finalmente al conjunto de widgets . </li></ul>Paso 3
    11. 11. Rodrigo Miranda Blog: www.rodrigomiranda.cl Paso 3 #./symfony generate:module administrador contacto
    12. 12. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>M odificamos el método o la acción index de nuestro módulo contacto para pasar una instancia del formulario a la plantilla. </li></ul>Paso 3
    13. 13. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Creamos una plantilla para visualizar el formulario. </li></ul>Paso 3
    14. 14. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>La variable $formulario sólo muestra los tres campos (widgets) del formulario. El resto de los componentes de un formulario, como la etiqueta <form> </form> y el botón de envío, los debe añadir el programador. </li></ul>Paso 3
    15. 15. Rodrigo Miranda Blog: www.rodrigomiranda.cl Paso 3
    16. 16. Rodrigo Miranda Blog: www.rodrigomiranda.cl Revisar el código HTML de la página.
    17. 17. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Labels : </li></ul><ul><li>Se construyen convirtiendo los nombres de los </li></ul><ul><li>campos en sus titulos: </li></ul><ul><li>La primera letra se convierte en mayúscula </li></ul><ul><li>Los guiones bajos se convierten en espacios en blanco </li></ul>
    18. 18. Rodrigo Miranda Blog: www.rodrigomiranda.cl Configurando un arreglo de Labels :
    19. 19. Rodrigo Miranda Blog: www.rodrigomiranda.cl Configurando sólo un label :
    20. 20. Rodrigo Miranda Blog: www.rodrigomiranda.cl Cambiar nombre de los campos :
    21. 21. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Ahora podremos obtener los campos enviados desde el formulario a través del arreglo contacto del objeto de la petición. </li></ul>
    22. 22. Rodrigo Miranda Blog: www.rodrigomiranda.cl Agregar un campo select.
    23. 23. Rodrigo Miranda Blog: www.rodrigomiranda.cl
    24. 24. Rodrigo Miranda Blog: www.rodrigomiranda.cl Acción que recibe.
    25. 25. Rodrigo Miranda Blog: www.rodrigomiranda.cl
    26. 26. Rodrigo Miranda Blog: www.rodrigomiranda.cl Modificación action Formulario
    27. 27. Rodrigo Miranda Blog: www.rodrigomiranda.cl
    28. 28. Rodrigo Miranda Blog: www.rodrigomiranda.cl Acción Gracias
    29. 29. Rodrigo Miranda Blog: www.rodrigomiranda.cl template graciasSuccess.php
    30. 30. Rodrigo Miranda Blog: www.rodrigomiranda.cl
    31. 31. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Atajos de la plantilla : </li></ul><ul><li>Symfony incluye una serie de variables propias en todas las plantillas. Estas variables se pueden considerar atajos que permiten el acceso directo a la información más utilizada. </li></ul>
    32. 32. Rodrigo Miranda Blog: www.rodrigomiranda.cl Atajos de la plantilla :
    33. 33. Rodrigo Miranda Blog: www.rodrigomiranda.cl Validación
    34. 34. Rodrigo Miranda Blog: www.rodrigomiranda.cl
    35. 35. Rodrigo Miranda Blog: www.rodrigomiranda.cl
    36. 36. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Validadores : </li></ul><ul><li>La validación de los campos se realiza mediante objetos que heredan de la clase sfValidatorBase . </li></ul><ul><li>Tal como lo hicimos con los widgets, que asociamos uno por cada campo, relacionaremos un validador por campo del formulario. </li></ul>
    37. 37. Rodrigo Miranda Blog: www.rodrigomiranda.cl
    38. 38. Rodrigo Miranda Blog: www.rodrigomiranda.cl
    39. 39. Rodrigo Miranda Blog: www.rodrigomiranda.cl Los formularios Propel
    40. 40. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Los formularios Propel son objetos que heredan de la clase base de formularios. </li></ul>
    41. 41. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>La clase base y la clase personalizada de formularios son creadas con el comando </li></ul><ul><li>./symfony propel:build-forms </li></ul><ul><li>, después de haber creado el modelo. </li></ul>
    42. 42. Rodrigo Miranda Blog: www.rodrigomiranda.cl Revisemos el formulario de Encuesta
    43. 43. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>La clase personalizada de formulario EncuestaForm, hereda de su clase base. </li></ul>
    44. 44. Rodrigo Miranda Blog: www.rodrigomiranda.cl Controlar el diseño del formulario
    45. 45. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>En estos momento para imprimir el formulario utilizamos actualmente: </li></ul><ul><li><?php echo $formulario ?> </li></ul>
    46. 46. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Para controlar totalmente el diseño del formulario. </li></ul>
    47. 47. Rodrigo Miranda Blog: www.rodrigomiranda.cl
    48. 48. Rodrigo Miranda Blog: www.rodrigomiranda.cl Mostrando errores en el formulario
    49. 49. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Tipos de Errores en Formularios : </li></ul><ul><li>Errores asociados a un campo específico. </li></ul><ul><li>Errores globales. </li></ul><ul><li>3. Errores de campos ocultos, éstos se añaden a los errores globales. </li></ul>
    50. 50. Rodrigo Miranda Blog: www.rodrigomiranda.cl ……………… . …………………… … .
    51. 51. Rodrigo Miranda Blog: www.rodrigomiranda.cl ……………… . …………………… … .
    52. 52. Rodrigo Miranda Blog: www.rodrigomiranda.cl <ul><li>Verificar si existe error en los formularios : </li></ul><ul><li>Error Global: </li></ul><ul><li>Error por Campo </li></ul>
    53. 53. Rodrigo Miranda Blog: www.rodrigomiranda.cl Preguntas?

    ×