Saltar al contenido

Disección de una aplicación Symfony – Paso 2

febrero, 11 2011

En la pasada publicación les mostré el resultado final. Es hora de ir paso a paso a ver como llegamos al mismo. Antes de seguir pongamos en claro que cosas asume este blog:

  • El lector es un desarrollador con experiencia (preferentemente en PHP). Estos no son publicaciones sobre PHP sino sobre Symfony.
  • El lector ya ha leído y sabe cómo configurar Symfony localmente para realizar sus proyectos. Tengo pensado aportar algo para los recién iniciados sobre ejemplos de configuración en servidores de producción (hostings externos), sobre detalles que me han dado algún dolor de cabeza, pero no hablaremos de eso ahora. Asumimos que el APACHE funciona y esta configurado bien.
  • El desarrollo fue sobre Windows 7 o sea que los comandos y explicaciones pueden migrarse a la plataforma que más les guste.

El proyecto, la aplicación y el primer módulo

Lo primero fue crear el proyecto para eso cree un directorio con el nombre de la aplicación, luego me posicioné dentro de dicho directorio y ejecuté el comando de creación de proyectos desde la consola.

Una vez hecho esto, lo que hacemos es crear una aplicación frontend desde la consola con el siguiente comando (posicionado en el directorio del proyecto).

symfony generate:app frontend

En este punto si fueramos al navegador deberíamos ver la pantalla por defecto de Symfony.

En este punto lo que normalmente hacemos es, crear un módulo por defecto nuestro (al cual llamaremos home en este caso). Luego agregaré código en el main.css (para darle un mejor estilo a mi página de inicio) y obviamente retocaré la página layout.php para que luzca como yo quiero.

Para lograr que todo esto funcione veamos todos los archivos que modificamos. Primero creamos el módulo desde la línea de comando:

symfony generate:module frontend home

Luego modificamos la configuración de las rutas para que apunten a nuestro nuevo módulo.

#/apps/frontend/config/routing.yml
homepage:
url: /
param: { module: home, action: index }

Modificamos también el view.yml para agregar el título de la aplicación, especificar el CSS que vamos a usar en caso que cambiemos el por defecto y configuramos la codificación del idioma de la página.

#/apps/frontend/config/view.yml
metas:
title: Pending tasks
description: Web app for managing tasks
keywords: task todo
language: en
#robots: index, follow 

stylesheets: [main.css]

Una vez hecho esto, generalmente hacemos los arreglos en el layout.php genérico y agregamos el código css. Posteriormente, no debemos olvidarnos de quitar la siguiente línea del actions.class.php (dejando la línea vacía), del módulo recién creado.

#/apps/frontend/modules/home/actions/actions.class.php
public function executeIndex(sfWebRequest $request)
{
$this->forward(‘default’, ‘module’);
}

Hasta este punto (si no nos olvidamos de nada), deberíamos lograr llegar a algo como esto:

Bueno por esta vez es todo, en la próxima analizaremos el modelo de datos para la aplicación en cuestión.

NOTA DEL AUTOR: Pido disculpas a los lectores ya que la aplicación que estamos viendo está en inglés, esto es porque la utilicé para otros propósitos en los que necesitaba que estuviera en dicho idioma. Sin embargo, toda la explicación seguirá siendo en español.

 

Advertisement

From → Symfony

Un Comentario
  1. Estaba tratando de hacer esto y no me funcionaba, por más que modificaba mi archivo routing.yml siempre me cargaba la pagina por defecto de symfony.

    Estoy utilizando NetBeans en win7 y lo que me funcionó fue ejecutar un “clear cache” click derecho al proyecto > symfony > clear cache

    Buen post amigo, saludos.

Deja un comentario

Please log in using one of these methods to post your comment:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

Seguir

Get every new post delivered to your Inbox.