Posts Tagged ‘ form

Guía de Symfony2 – Capítulo 10 – Validación de datos y creación de formularios

VN:F [1.9.22_1171]
Rating: 4.3/5 (3 votes cast)

Fue publicado el décimo capítulo de la Guía de Symfony2 en maestros del Web y en este capítulo les hablo sobre uno de los temas que más me ha gustado de Symfony desde que empecé a trabajar con el framework: validación de los datos y la creación de formularios.

Para las validaciones hablaremos sobre los @Asserts, simples anotaciones que realizan validaciones poderosas con poco código y vemos que Symfony2 ya nos provee de la gran mayoría que necesitaremos usar.

Hablando sobre los formularios notaremos la gran diferencia de diseñar los formularios y programar los formularios por medio de clases. Me gusta decir que en Symfony, el concepto de un formulario NO es simplemente introducción de texto sino introducción de texto VÁLIDO para la aplicación, libre de los problemas que hoy se tienen al crear un formulario a mano y tener que recordar pelear con ataques CSRF, XSS, SQL Injection y cambios en caliente con herramientas como Firebug.

El sub-framework de formularios es uno de los que más me hicieron sentir la diferencia entre usar un framework y no hacerlo y todavía hay muchas otras herramientas que nos permite usar como los formularios embebidos por lo que hay bastante para aprender.

En el primer capítulo de esta guía hablamos sobre que uno de los objetivos de Symfony es plantear que cada cosa debe ir en su lugar, respetando el concepto del MVC. Con esto podemos ver que no solo podríamos tener un equipo de desarrollo, con personas expertas en cada área, trabajando con el modelado, otras con los controladores y a los diseñadores en la vista, sino que también podríamos hablar de personas que trabajen netamente en la creación de los formularios de la aplicación.

Por mi parte este es mi último capítulo para la Guía de Symfony2 pero espero que nos podamos encontrar en siguientes artículos. En el siguiente capítulo @maycolalvarez hablará sobre la integración de Ajax en nuestras aplicaciones hechas con Symfony2.

Ajax y jQuery 6/6 – Procesando formularios con validaciones

VN:F [1.9.22_1171]
Rating: 3.8/5 (5 votes cast)

Siguiendo con el ejemplo visto en el artículo anterior sobre la serie de Ajax y jQuery, usemos el mismo ejemplo en el cual habíamos creado un script super sencillo y genérico para hacer que nuestro menú utilice llamadas asíncronas al servidor y agreguemos la funcionalidad de envío a nuestro formulario de contacto. Los archivos del ejemplo anterior los puedes descargar de aquí.

El objetivo de este artículo será agregar validaciones a nuestros formularios enviados por Ajax, ya que el envío en sí se encuentra explicado en el artículo sobre Hijax.

Recordemos el ejemplo anterior

El código del ejemplo anterior para la página de contacto es el siguiente.

<?php sleep(1) ?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

        <link href="style.css" rel="stylesheet" type="text/css" />

        <script type="text/javascript" src="jquery-1.5.min.js"></script>
        <script type="text/javascript" src="ajax.js"></script>

    </head>
    <body>

        <div id="loading"><img alt="Cargando"  src="loading.gif" /></div>

        <div id="mainmenu">
            <ul id="menu">
                <li><a href="inicio.php" class="ajax">Inicio</a></li>
                <li><a href="acercade.php" class="ajax">Acerca de</a></li>
                <li><a href="contacto.php" class="ajax">Contactos</a></li>
            </ul>
        </div>

        <div id="content">
            <h1>Contacto</h1>

            <form action="procesar_contacto.php">
                <label for="nombre">Nombre:</label>
                <input type="text" name="nombre" id="nombre" /><br />
                <label for="asunto">Asunto:</label>
                <input type="text" name="asunto" id="asunto" /><br />
                <label for="comentario">Comentario:</label>
                <textarea cols="30" rows="5" name="comentario" id="comentario"></textarea><br />
                <input type="submit" value="Enviar" />
            </form>
        </div>

    </body>
</html>

Leer mas

Helpers 2/2 – Select Box

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)

Continuando este tema que lo dejé para continuar viendo otras cosas, me gustaría seguir hablando y creando helpers que ayuden a las personas que no están usando algún framework que ya disponga de algo parecido como Symfony.

Ya habíamos visto en el artículo de introducción llamado Helpers – Funciones genéricas la idea de crear un helper para crear controles input para formularios, ya sean de tipo text, button, submit, checkbox, radio, etc. Hoy me gustaría tratar un helper un poco más complejo para los selects (combo box) ya que si no lo tenemos hay que ir creando componentes de tipo <select> cada vez que obtenemos los datos de la base de datos y suele resultar un poco cansador.

Definamos la base

Tomemos como base crear una función a la cual llamaremos select_helper() que tomará por argumento los datos necesarios para la creación del combo. En un principio necesitaremos los argumentos más principales como el name del componente y las opciones (<option>) que se desplegarán. Este último será tratado como un array asociativo en donde tendremos como clave el value de nuestros options, y como el valor de la clave el texto a mostrar por cada opción. Haciéndolo bien básico podríamos tener el siguiente código

function select_helper($name, $selectOptions)
{
    //-- Cargaermos el texto HTML generado dentro de
    //   la variable $ret para finalmente hacer un return
    $ret = '<select name="' . $name . '">';

    //-- Por cada par (clave => valor) crearemos un <option]> que
    //   iremos concatenando a la variable $ret
    foreach($selectOptions as $key => $value)
    {
        $ret .= '<option value="' . $key . '">' . $value . '</option>';
    }

    //-- Finamente concatenamos el cierre del combo
    $ret .= '</select>';

    //-- Retornamos el HTML para usarlo con un echo
    return $ret;
}

//-- Esto lo podríamos utilizar así
//-- Creamos un array (lo podríamos haber obtenido de la base de datos
//   por ejemplo de una tabla parametrica como por ejemplo lo explicado
//   este artículo)
$paises = array(
    'PY' => 'Paraguay',
    'AR' => 'Argentina',
    'UR' => 'Uruguay'
);

echo select_helper('pais', $paises);

Leer mas

Helpers 1/2 – Funciones genericas

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)

Analizando un poco sobre los famosos helpers mencionados hoy en día en la mayoría de los Frameworks orientados a la web, me pareció interesante la idea de formular alguna explicación de como crearlos a fin de que sean lo más genéricos y reutilizables posible.

Para el ejemplo tomaremos el caso de un helper capaz de crear un input de formulario de la familia de los text, hidden, password, radio, checkbox, button, submit, reset. La idea sería crear una función que genere el HTML necesario para esto. Vayamos a un primer ejemplo y analicemoslo.

function input_helper($name, $type='text', $value='')
{
    $ret = '<input type="' . $type . '" name="' . $name . '" value="' . $value . '">';
    return $ret;
}

echo input_helper('nombre');
echo input_helper('id', 'hidden', 1);
echo input_helper('nombre', 'text', 'John Doe');
echo input_helper('sexo', 'checkbox', 'M');

Esto podría ser de ayuda para lo que necesitamos y es super sencillo. Obligatoriamente deberíamos pasar un nombre para el input y luego opcionalmente un tipo y un valor, tomando en cuenta que si no enviamos el tipo lo tomamos como inputtext

Supongamos que necesitaremos que el helper también sirva para agregar un class para trabajar con CSS. Este ya no sería un atributo obligatorio así que debería ser opcional y lo podremos como último parámetro de entrada. Leer mas