Botones para enlaces en symfony

by Edwind Richzendy Contreras Soto on 29 de marzo de 2010

Una de las cosas que symfony como framework no tiene ( y no tiene por que tenerlo ) y que toda aplicación debe tener, es un set de botones coherente, liviano, simple, con código reutilizable y atractivo.

cancelar_Guardar

Teniendo tiempo buscando una solución para esto me encontré con múltiples opciones que no eran funcionales por que implicaban diseñar una imagen por cada botón, o era un diseño muy simple, o una etiqueta CSS por cada botón, o usaba javascript ( lo cual no es muy accesible ), pero a la final la perseverancia dio resultados y me conseguí este método de hacer botones y que era justo lo que estaba buscando y además funciona muy bien con cualquier navegador.

Acá voy a explicar como se usa en el framework symfony, sin embargo lo puedes adaptar a cualquier aplicación web.

Primero creamos un archivo css, llamado buttons.css y lo metes en el directorio web/css con el siguiente contenido:

/* BUTTONS */

.buttons a, .buttons button{
    display:block;
    float:left;
    margin:0 7px 0 0;
    background-color:#f5f5f5;
    border:1px solid #dedede;
    border-top:1px solid #eee;
    border-left:1px solid #eee;

    font-family:"Lucida Grande", Tahoma, Arial, Verdana, sans-serif;
    font-size:100%;
    line-height:130%;
    text-decoration:none;
    font-weight:bold;
    color:#565656;
    cursor:pointer;
    padding:5px 10px 6px 7px; /* Links */
}
.buttons button{
    width:auto;
    overflow:visible;
    padding:4px 10px 3px 7px; /* IE6 */
}
.buttons button[type]{
    padding:5px 10px 5px 7px; /* Firefox */
    line-height:17px; /* Safari */
}
*:first-child+html button[type]{
    padding:4px 10px 3px 7px; /* IE7 */
}
.buttons button img, .buttons a img{
    margin:0 3px -3px 0 !important;
    padding:0;
    border:none;
    width:16px;
    height:16px;
}

/* STANDARD */

button:hover, .buttons a:hover{
    background-color:#dff4ff;
    border:1px solid #c2e1ef;
    color:#336699;
}
.buttons a:active{
    background-color:#6299c5;
    border:1px solid #6299c5;
    color:#fff;
}

/* POSITIVE */

button.positive, .buttons a.positive{
    color:#529214;
}
.buttons a.positive:hover, button.positive:hover{
    background-color:#E6EFC2;
    border:1px solid #C6D880;
    color:#529214;
}
.buttons a.positive:active{
    background-color:#529214;
    border:1px solid #529214;
    color:#fff;
}

/* NEGATIVE */

.buttons a.negative, button.negative{
    color:#d12f19;
}
.buttons a.negative:hover, button.negative:hover{
    background:#fbe3e4;
    border:1px solid #fbc2c4;
    color:#d12f19;
}
.buttons a.negative:active{
    background-color:#d12f19;
    border:1px solid #d12f19;
    color:#fff;
}

Para darle un carácter de individualidad a sus botones se necesita colocar una pequeña imagen o icono a un lado y para ello nos bajamos el arsenal de 700 iconos 16x16px de FAMFAMFAM los cuales solo ocupan 1mb y además son libres de usar ya que tienen licencia Creative Commons Attribution, el archivo que nos descargamos lo extraemos y la carpeta icons la pasamos íntegramente al directorio web/images/

Ahora pasamos al código de nuestra aplicación, donde vayamos a usar un icono debemos incluir el archivo css, sin embargo si lo van a usar en la mayoría de vistas sugiero que lo incluyan en el archivo layout.php en mi caso lo tengo en app/frontend/templates/layout.php, simplemente agregamos la siguiente linea en la parte superior, debajo de todos los css que hayas declarado:

<?php echo stylesheet_tag(‘buttons’) ?>

Luego de esto ya podemos hacer disposición de usar nuestros botones en la vista

Por ejemplo en un formulario podríamos hacer lo siguiente, sustituyendo el código del botón por defecto y del enlace de cancelar:

CancelarCancelar

El class negative hace que el rolover dle botón sea de color rojo, el class positive hace que el rolover del botón sean verde y si no declaran ninguna clase, el rolover del botón sera en un bonito color azul claro.

Si quieren saber más al respecto, pueden visitar el enlace que tome como referencia en:

http://particletree.com/features/rediscovering-the-button-element/

3 thoughts on “Botones para enlaces en symfony

  1. CaChi says:

    Bueno esto mas bien es CSS, el lenguaje del lado servidor queda inútil porque la funcionalidad es del lado cliente, asi que funciona con symfony, KumbiaPHP, Spring, RoR, Catalyst, Grails y gran etc…

  2. Richzendy says:

    @Cachi: Si en realidad es así, solo hice este tuto como una nota mental para que no se me olvide y bueno, por si le sirve a alguien más, en el post si dije que se podía usar con cualquier otra cosa, debido a que solo es CSS

  3. Mimi says:

    Hey.. muy buena nota mental.. a mi me sirve mucho..

Deja un comentario

%d personas les gusta esto: