tutoriales

Tutorial de Symfony2: Hola mundo en Symfony

Una vez tenemos instalado Symfony2 en nuestro servidor (algo sencillo como vimos en el capítulo anterior) vamos a comenzar a trabajar.

(i) En primer lugar tenemos que crear un bundle, que básicamente es la semilla de nuestra aplicación, el germen de lo que vamos a construir.

php app/console generate:bundle --namespace=Acme/HelloBundle --format=yml

Básicamente le estamos indicando a Symfony2, crea un Bundle, cuyo formato es yml y al que le vamos a dar el nombre de Hello (HelloBundle en terminología Symfony2) dentro del entorno Acme.

(ii) Vamos a crear el clásico "Hola Mundo" que todo hijo de vecino crea cuando está aprendiendo un nuevo lenguaje de programación. Para ello iremos al fichero /app/config/routing.yml dentro de nuestra aplicación:

 

  • hola:  
  • pattern:  /hola/{name}
  • defaults: { _controller: AcmeHelloBundle:Hello:index }

 

 

Aquí hay que llevar especial cuidado en no meter tabuladores en lugar de espacios, ya que Symfony lo detectará como un error y podemos volvernos locos buscando qué es lo que hemos hecho mal.

Un pequeño truco es usar un default, un valor por defecto para {name}. De esta forma estamos creando también una página para el "root" o directorio raíz:

  • hola:  
  • pattern:  /hola/
  • defaults: { _controller: AcmeHelloBundle:Hello:index , name:Mundo}

 

 

El default es "name:Mundo", separado por una coma.

Si intentamos ahora mismo acceder a nuestro servidor recibiremos un error muy específico y claro: nos falta un controlador.

localhost/DIRECTORIO-SYMFONY2/web/app_dev.php/hola/mundo

 

(iii) Nada más sencillo de solucionar. Creamos un fichero que se llamará, teniendo en cuenta cómo hemos llamado el Bundle, de la siguiente forma:

// src/Acme/HelloBundle/Controller/HelloController.php

namespace Acme\HelloBundle\Controller;

use Symfony\Component\HttpFoundation\Response;

class HelloController{

    public function indexAction($name)    {

       return new Response('<html><body>Hello '.$name.'!</body></html>');  

 }

}

 

Dentro de HelloController.php hay dos declaraciones fundamentales, la clase HelloController, en la linea 4: class HelloController{

y la función indexAction, una línea más abajo. A esta función hemos hecho referencia desde el routing.yml, justamente en la linea que habla del controller:


  • defaults: { _controller: AcmeHelloBundle:Hello:index , name:Mundo}

En realidad le estamos dando la ruta al Bundle, AcmeHello, y al Action que vamos a ejecutar: index. Ambos, Bundle y Action llevarán el postfijo después de su nombre, es decir, AcmeHelloBundle e indexAction. Si por ejemplo el action se llamara NuevoCliente, la función en el controller se llamaría NuevoClienteAction, y haríamos referencia a ella desde el fichero yml (pronunciado "YAMEL") de esta forma:


 

  • defaults: { _controller: AcmeHelloBundle:Hello:NuevoCliente}

 

 

Tutorial de Symfony2: instalacion

1. Descargamos symfony2: http://symfony.com/download

2. Descomprimimos y dejamos en un directorio dentro de nuestro apache, por ejemplo:

/var/www/symfonylabs/

3. Si entramos en /var/www/symfonylabs/web nos dará error. Tenemos que entrar a configurarlo primero: http://localhost/symlabs/web/config.php

Y seguimos los pasos para configurarlo

4. Seguramente no podamos escribir sobre el fichero parameters.ini, con lo que lo abrimos y pegamos el codigo que nos indicará el propio "wizard" o configurador que estamos siguiendo: http://localhost/symlabs/web/app_dev.php/

Listo, ya podemos acceder a nuestra nueva app:

http://localhost/symlabs/cruisehunter/web/app_dev.php/

Fácil, verdad? En el siguiente punto aprenderemos a crear la primera aplicación o librería (llamada Bundle en Symfony2) y a "picar" algo de código.

tutorial ssh-keygen en 2 pasos

ssh-keygen es un metodo que nos facilita el poder ejecutar determinados comandos desde nuestra máquina en una remota, sin la necesidad de tener que introducir la password en cada conexión. Es muy útil, por ejemplo, para sencillamente conectarnos con el servidor desde el ordenador con el que siempre trabajamos (siempre que sea un puesto seguro claro) o por ejemplo para ejecutar determinados scripts periódicos desde nuestro escritorio y sin necesidad de que estemos nosotros delante.

La mayoría de tutoriales que he encontrado son algo liosos, aunque en realidad una vez has comprendido la teoría es tremendamente sencillo. En dos pasos:

  • generamos una llave pública en nuestro ordenador: ssh-keygen -t rsa (le damos a enter a todo)
  • pegamos esa clave al fichero .ssh/authorized_keys de la máquina remota

Listos, ya podemos hacer ssh desde la máquina donde hemos hecho el ssh-keygen hacia la que hemos pegado dicho fichero en el authorized_keys.... quedó muy lioso?

categorias: