Se publica la primera beta de Symfony 1.2

Un día después de lo anunciado, ayer se publicó la primera beta de Symfony 1.2. El poco tiempo transcurrido desde el lanzamiento de la versión 1.1 hacía creer que Symfony 1.2 sería una versión de transición, pero la realidad es que incluye muchas novedades:

  • Nuevo generador de la parte de administración (admin generator). Se ha actualizado para que utilice el nuevo framework de formularios, pero se han dejado para Symfony 1.3 características avanzadas como mejor soporte de formatos (HTML, XML, JSON, ...), ordenación por varias columnas, edición de contenidos en línea, etc.
  • Los formularios de Symfony 1.2 incluyen mejoras, añadidos y correcciones respecto a los de Symfony 1.1.
  • El sistema de enrutamiento permite ahora definir directamente rutas que realizan operaciones REST sobre objetos del modelo. En otras palabras, se puede realizar una consulta a la base de datos para obtener los datos de un objeto directamente en el archivo routing.yml, sin necesidad de añadir código en la acción.
  • Se ha creado una nueva tarea llamada propel:build-filters que crea automáticamente los filtros adecuados para los objetos del modelo.
  • Propel se ha actualizado a la versión 1.3, por lo que se va a producir una mejora apreciable en el rendimiento.
  • Doctrine se ha incluido por defecto en el framework, así que nunca ha sido tan fácil utilizar Doctrine en vez de Propel.
  • Ahora es obligatorio activar manualmente los plugins que utiliza cada proyecto, por lo que ya no es suficiente con instalarlos. 

En cuanto a las cosas que no se han podido incluir en esta versión y se han dejado para Symfony 1.3:

  • La tarea project:deploy para instalar remotamente las aplicaciones.
  • Las migraciones de Propel, que setán muy avanzadas pero no se han podido terminar.
  • La librería Swift no se ha integrado como plugin incluido por defecto en Symfony, por lo que debes instalarla manualmente si quieres enviar emails.

Si quieres probar esta primera versión beta, puedes leer la guía de instalación y la guía de actualización respecto a Symfony 1.1.x:

Durante este mes de noviembre se lanzarán 1 o 2 nuevas betas y seguidamente se publicará la versión RC (release candidate) y la versión final de Symfony 1.2 antes de que acabe este año 2008.

Fuente: symfony 1.2 beta is out the door

Comentarios

  1. En mi proyecto necesitaba crear dinámicamente algunas tablas en la BD, usamos symfony 1.1.7, y como ORM PROPEL. Investigando en el código de PROPEL y en INTERNET, me dí cuenta que no había forma de generar el modelo (Clases Persistentes) de una porción de la BD, en este caso de las tablas que generaba dinámicamente.

    Por ello decidí programar algo sencillo que me permitiese hacerlo. Aquí les dejo una pequeña guía para que lo hagan por ustedes mismo:

    Pasos 1- Agregue al final del fichero propel.ini que se encuentra en la carpeta Config del proyecto symfony siguiente línea propel.selected.tablas = [nametabla1,nametabla2] donde nametabla1 es el nombre de la 1era tabla que se quiere generar el modelo, separado por una coma coloca a continuación el nombre de la otra tabla y así sucesivamente. 2- En el fichero /proyecto/lib/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelCreoleTransformTask.php: Agregue el método: public function especificTables(){ $tables=array(); $path=sfConfig::get('sf_config_dir').'/propel.ini'; $content=file_get_contents($path); $posinicial=strpos($content,'['); if ($posinicial===false) return null; $posfinal=strpos($content,']');

    $strtables=substr($content,$posinicial+1,$posfinal-$posinicial-1);
        $tables=explode(',',$strtables);
        //print($strtables);
        print($tables[0]);
         return $tables;
     
    }

    luego de de esto borre el método createDatabaseNode() y pegue en su lugar el siguiente código: protected function createDatabaseNode($dbInfo) {

    $this->log("Processing database");
     
        $node = $this->doc->createElement("database");
        $node->setAttribute("name", $dbInfo->getName());
     
        if ($vendorNode = $this->createVendorInfoNode($dbInfo->getVendorSpecificInfo())) {
            $node->appendChild($vendorNode);
        }
     
        // create and add table nodes
        $tables=$this->especificTables();
     
        foreach($dbInfo->getTables() as $table) {
     
                if (($tables==null) || (array_search($table->toString(),$tables)!== false )) {  
                $tableNode = $this->createTableNode($table);
                $node->appendChild($tableNode);
            }
        }
     
        return $node;
    }

    3- En el fichero /proyecto/lib/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelBuildSchemaTask.class.php En el método execute encontrará la siguiente línea de código $schema = preg_replace('/<database\s+name="[^"]+"/s', 'run(); //Genero el esquema

    $modeltask  =new  sfPropelBuildModelTask($dis,$fr);
          $modeltask-&gt;run();  //Genero el modelo a partir del esquema anteriormente creado
     
          $cachestask= new sfCacheClearTask($dis,$fr);
          $cachestask-&gt;run(); // limpio la caché
     
                // Salvo un estudiante para la BD a partir de la clases creadas dinámicamente.
          $est=new Estudiante();
          $est-&gt;setNombre("Ernesto Sarduy");
          $est-&gt;save();

    } }

    Espero le sirva a alguien ...

    Ernesto Sarduy el 22 de junio de 2009, 15:02:48

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

4 de noviembre de 2008

Proyectos Symfony destacados

La plataforma de eCommerce 100% Symfony que rivaliza con Magento y PrestaShop. Ver más

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