Otros cambios importantes de Symfony 1.1

Symfony 1.1 incluye centenares de cambios en su arquitectura interna. Afortunadamente, los cambios que los programadores tienen que hacer en sus aplicaciones para adaptarlas a la nueva versión no son muy numerosos.

Los creadores de Symfony han publicado una guía de actualización en la que se explican detalladamente todos los cambios que pueden afectar al código de los proyectos. Sin embargo, después de traducir completamente el libro oficial de Symfony 1.1, hemos descubierto algunos cambios importantes que han pasado desapercibidos:

1) Acciones:

Las acciones de Symfony 1.1 reciben como primer parámetro el objeto de la petición y se ha modificado el nombre del método ->getRequestParameter():

[Symfony 1.0]

class contenidoActions extends sfActions
{
  ...

  public function executeActualizar()
  {
    $this->nombre = $this->getRequestParameter('nombre');
  }
}

[Symfony 1.1]

class contenidoActions extends sfActions
{
  // ...

  public function executeActualizar($peticion)
  {
    $this->nombre = $peticion->getParameter('nombre');
  }
}

2) Determinar si el método es POST:

Otra de las instrucciones más utilizadas en las aplicaciones Symfony ha cambiado completamente en la nueva versión.

[Symfony 1.0]

if ($this->getRequest()->getMethod() != sfRequest::POST)
{
  // Preparar datos para la plantilla
}

[Symfony 1.1]

if (!$this->getRequest()->isMethod('post'))
{
  // Preparar datos para la plantilla
}

3) Helpers:

Symfony 1.0 incluye helpers para seleccionar países e idiomas. En Symfony 1.1 también se ha incluído el helper para seleccionar la moneda.

4) Separadores de rutas:

Symfony 1.0 utiliza la barra / como separador de las partes que forman el patrón de una ruta. En Symfony 1.1 se puede utilizar la barra (/) y el punto (.). Además, existe una opción para añadir nuevos separadores de forma que se pueden crear rutas como /articulo/:ano-:mes-:dia/:titulo

5) Pruebas unitarias:

En Symfony 1.1 no es necesario inicializar el navegador de pruebas.

[Symfony 1.0]

$browser = new sfTestBrowser();
$browser->initialize();

$browser->
  get('/mimodulo/index')->
  isStatusCode(200)->
  ...

[Symfony 1.1]

$browser = new sfTestBrowser();

$browser->
  get('/mimodulo/index')->
  isStatusCode(200)->
  ...

6) Archivos de log:

Symfony 1.1 permite personalizar el formato de los archivos de log mediante las opciones de configuración del archivo factories.yml

7) Eventos:

El capítulo 17 del libro es uno de los que más cambios presenta entre las diferentes versiones de Symfony. En ese capítulo se explica el mecanismo de eventos de Symfony 1.1, que sustituye y mejora al viejo mecanismo de mixins de Symfony 1.0.

Comentarios

  1. Hola javier. Realmente ahora los eventos, son algo mas sencillo de entender.

    Tiene la serie de capitulos que deberiamos reimpirmir del manual para cambiar las hojitas? :)

    puentes diaz el 18 de julio de 2008, 16:52:11

  2. Roberto, coincido contigo en que ahora los eventos son mucho más fáciles de entender.

    En cuanto a los capítulos que hay que reimprimir, realmente todos tienen cambios. Unos pocos capítulos (sobre todo los de introducción) coinciden al 90% con la versión anterior. Sin embargo, otros capítulos tienen decenas de pequeños cambios que los hacen bastante diferentes.

    Los dos únicos capítulos especiales son el 10 (formularios) y el 14 (generadores) que en Symfony 1.1 se han declarado obsoletos y que permanecen por motivos de compatibilidad con la versión anterior.

    Javier Eguiluz el 18 de julio de 2008, 17:43:44

  3. Gracias por las sugerencias de los cambios. Quería pedirles un favor, podrían publicar algún tutorial sobre migración de los antiguos validator.yml a los nuevos validadores con formularios?

    Gracias y muy buen trabajo.

    Ivan Rey el 21 de julio de 2008, 4:56:45

  4. Iván, muy pronto vamos a publicar el nuevo libro de los formularios de Symfony 1.1, donde se explica la transición a los nuevos validadores y muchas otras cosas.

    Javier Eguiluz el 21 de julio de 2008, 16:06:09

  5. Sobre el punto 5, en http://trac.symfony-project.org/browser/branches/1.1/UPGRADE se habla de que los métodos ->initialize() ya no son necesarios en general.

    nubeiro el 22 de julio de 2008, 8:11:26

  6. Donde dice

    class contenidoActions extends sfActions { // ...

    public function executeActualizar($peticion) { $this->nombre = $peticion->getParameter('nombre'); } }

    el $peticion , a mi me aparece como $request. esto lo puedes cambiar?

    puentes diaz el 22 de julio de 2008, 13:50:18

  7. Para "nubeiro": efectivamente en la guía de actualización (http://www.symfony.es/documentacion/actualizacion-de-symfony-10-a-symfony-11/) se comenta lo de los métodos "initialize()". Lo comentamos porque en la guía de actualización se explica en un párrafo pequeño y en el libro oficial supone decenas de pequeños cambios en muchos listados de código.

    Para "puentes diaz": el objeto de la petición es el primer parámetro que te pasan en el método que ejecuta las acciones. Lo puedes llamar como quieras, pero como normalmente se programa en inglés, nunca cambias el valor $request

    Javier Eguiluz el 22 de julio de 2008, 16:23:16

Este artículo ya no permite añadir más comentarios.
¿Por qué? Los artículos cierran sus comentarios automáticamente unos meses después de su publicación para asegurar que estos sigan siendo relevantes.

Publicada el

18 de julio de 2008

Proyectos Symfony destacados

La forma más sencilla de generar el backend de tus aplicaciones Symfony. Ver más

Síguenos en @symfony_es para acceder a las últimas noticias.