{"id":18,"date":"2009-06-02T10:30:17","date_gmt":"2009-06-02T14:30:17","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/andresvargas\/?p=18"},"modified":"2009-06-30T19:06:45","modified_gmt":"2009-06-30T23:06:45","slug":"symfony-framework-de-desarrollo-php","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/andresvargas\/2009\/06\/02\/symfony-framework-de-desarrollo-php\/","title":{"rendered":"Symfony framework de Desarrollo PHP"},"content":{"rendered":"<p style=\"text-align: justify\">Sin duda alguna se ha convertido en uno de los Frameworks de Desarrollo mas usado y popular que hay, quiz\u00e1 no sea el mejor pero si uno de los que mas documentaci\u00f3n en espa\u00f1ol tiene,\u00a0 symfony provee una arquitectura, componentes y herramientas para los desarrolladores que permiten\u00a0 construir complejas aplicaciones web mas rapidamente.<\/p>\n<p style=\"text-align: justify\">Symfony sigue el paradigma <a href=\"http:\/\/en.wikipedia.org\/wiki\/Model-view-controller\">MVC<\/a> ( modelo-vista-controlador ),\u00a0 el cu\u00e1l es un patr\u00f3n de arquitectura muy usado en Ingenier\u00eda de Software. Personalmente en principio tuve ciertas dificultades con symfony que se fueron resolviendo a medida que leia la documentaci\u00f3n e informaci\u00f3n al respecto, recomiendo antes de comenzar a desarrollar, leer muy bien como funciona symfony internamente esto les ahorrar\u00e1 horas de trabajo, los libros que us\u00e9 son Symfony The Definitive Guide y Jobeet.<\/p>\n<p style=\"text-align: left\">pasos para tener tu aplicaci\u00f3n en unos pocos minutos:<\/p>\n<p style=\"text-align: center\"><strong>====&gt;\u00a0\u00a0\u00a0 Creaci\u00f3n del proyecto<\/strong><\/p>\n<p>En caso de usar <a href=\"http:\/\/www.wampserver.com\/en\/download.php\">wamp<\/a>, y <a href=\"http:\/\/www.symfony-project.org\/get\/symfony-1.2.7.zip\">symfony 1.2.7<\/a><br \/>\nCreamos una carpeta llamada miproyecto dentro de www, y a su vez dentro de esta creamos una carpeta lib y dentro de lib una llamada vendor ya aqui descomprimimos la versi\u00f3n de symfony que hayamos descargado y colo camos su contenido en una carpeta llamada symfony. el directorio queda --&gt; miproyecto\/lib\/vendor\/symfony<\/p>\n<ol>\n<li>\n<h3><span style=\"color: #808000\">Configurando<br \/>\n<\/span><\/h3>\n<p><strong><em><span style=\"color: #000080\">Aseguremonos que todo este ok<\/span><\/em><\/strong><br \/>\nc:\\&gt; php lib\/vendor\/symfony\/data\/bin\/check_configuration.php<br \/>\n<strong><em><span style=\"color: #000080\">Generemos el proyecto al realizar esta acci\u00f3n se genera el \u00e1rbol de directorios<\/span><\/em><\/strong><br \/>\nc:\\&gt; php lib\/vendor\/symfony\/data\/bin\/symfony generate:project nombre_mi_proyecto<br \/>\n<em><strong><span style=\"color: #000080\">Generamos la aplicaci\u00f3n de esta forma se crea el \u00e1rbol de directorios donde almacenaremos<br \/>\nlas plantillas generales, y el mvc de la aplicaci\u00f3n.<\/span><\/strong><\/em><br \/>\nc:\\&gt; php symfony generate:app --escaping-strategy=on --csrf-secret=UniqueSecret frontend<\/p>\n<address> los argumentos despu\u00e9s de app se escriben por motivos de seguridades para evitar ataques a nuestra aplicaci\u00f3n por ejemplo<\/address>\n<p><span style=\"color: #000080\"><em><strong>En el archivo ProjectConfiguration.class.php agregar esta linea que hace portable nuestro proyecto<br \/>\nagregando una ruta relativa a la clase de incializaci\u00f3n.<\/strong><\/em><\/span><br \/>\nrequire_once dirname(__FILE__).'\/..\/lib\/vendor\/symfony\/lib\/autoload\/sfCoreAutoload.class.php';<\/p>\n<p>Configuraci\u00f3n en el servidor apache para el proyecto<br \/>\n# Esta es la configuraci\u00f3n para mi_proyecto<br \/>\n&lt;VirtualHost 127.0.0.1:80&gt;<br \/>\nServerName miproyecto.com<br \/>\nDocumentRoot \"C:\\wamp\\www\\miproyecto\\web\"<br \/>\nDirectoryIndex index.php<br \/>\n&lt;Directory \"C:\\wamp\\www\\miproyecto\\web\"&gt;<br \/>\nAllowOverride All<br \/>\nAllow from All<br \/>\n&lt;\/Directory&gt;<br \/>\nAlias \/sf \"C:\\wamp\\www\\miproyecto\\lib\\vendor\\symfony\\data\\web\\sf\"<br \/>\n&lt;Directory \"C:\\wamp\\www\\miproyecto\\lib\\vendor\\symfony\\data\\web\\sf\"&gt;<br \/>\nAllowOverride All<br \/>\nAllow from All<br \/>\n&lt;\/Directory&gt;<br \/>\n&lt;\/VirtualHost&gt;<\/p>\n<p>Listo ya podr\u00e1s acceder a tu aplicaci\u00f3n desde un browser con la siguiente direcci\u00f3n<br \/>\nhttp:\/\/miproyecto.com<\/li>\n<li>\n<h3><span style=\"color: #808000\">Definiendo la Base de Datos<\/span><span style=\"color: #808000\"><span style=\"color: #000000\"><br \/>\n<\/span><\/span><\/h3>\n<p><span style=\"color: #808000\"><span style=\"color: #000000\">Dentro de la carpeta config se encuentran los archivos de configuraci\u00f3n de symfony abriremos schema.yml, el cu\u00e1l lo podemos personalizar a nuestro gusto o podemos generarlo a partir de una base ya existente.<br \/>\nEl contenido de este archivo es como el siguiente:<\/span><\/span><\/p>\n<p>propel:<br \/>\n_attributes: { noXsd: false, defaultIdMethod: none, package: lib.model }<\/p>\n<p>tabla_pais:<br \/>\n_attributes: { phpName: Pais, idMethod: native }<br \/>\nid: ~<br \/>\nnombre: { type: varchar(30), required: true }<br \/>\nusuario: { type: varchar(10), required: true }<br \/>\ncreated_at: ~<br \/>\nupdated_at: <span style=\"color: #808000\"><span style=\"color: #000000\">~<\/span><\/span><\/p>\n<p><span style=\"color: #808000\"><span style=\"color: #000000\">tabla_sucursal:<br \/>\n_attributes: { phpName:Sucursal, idMethod: native }<br \/>\nid: ~<br \/>\nnombre: { type: varchar(30), required: true }<br \/>\npais_id: { type: integer, foreignTable: tabla_pais, foreignReference: id, required: true }<br \/>\nusuario: { type: varchar(10), required: true }<br \/>\ncreated_at: ~<\/span><\/span><\/p>\n<p>Este ejemplo es de un archivo yml que tiene una sintaxis muy especial, deben escribirlo con las debidas identaciones sino tendr\u00e1n problemas, symfony entiende por default palabras como id, created_at, updated_at, etc ... y los personaliza autom\u00e1ticamente, el <span style=\"color: #808000\"><span style=\"color: #000000\">phpName es el nombre que queremos que tenga nuestra clase una vez generado todo.<\/span><\/span><\/p>\n<p><span style=\"color: #333399\"><strong><em>Configurando la base de datos, con esta sentencia queda configurado el archivo databases.yml que se encuentra en la carpeta config.<\/em><\/strong><\/span><br \/>\nc:&gt; php symfony configure:database \"mysql:host=localhost;dbname=nombre_base\" root ConTraSenA<br \/>\n<strong><em><span style=\"color: #333399\">Generando el archivo sql que se guardara en data\/sql con las sentencias sql optimizadas<\/span><\/em><\/strong><br \/>\nc:&gt; php symfony propel:build-sql<br \/>\n<span style=\"color: #333399\"><em><strong>Insertando las tablas en la base<\/strong><\/em><\/span><br \/>\nc:&gt; php symfony propel:insert-sql --no-confirmation<\/li>\n<li>\n<h3><span style=\"color: #808000\">MVC de la app<\/span><\/h3>\n<p><strong><em><span style=\"color: #333399\">Generamos el modelo, los controladores, los formularios<\/span><\/em><\/strong><\/p>\n<p>c:&gt; php symfony propel:build-all<\/p>\n<p><span style=\"color: #333399\"><em><strong>Generamos los modulos de la aplicaci\u00f3n uno a uno, es aqui donde se realizan las operaciones fundamentales sobre las tablas<\/strong><\/em><\/span><\/p>\n<p>c:&gt; php symfony propel:generate-module --with-show --non-verbose-templates frontend nombre_para_modulo nombre_tabla<\/p>\n<p><strong><em><span style=\"color: #333399\">Reemplazar luego los metodos _toString en las clases principales y vacias de cada modulo.<\/span><\/em><\/strong><\/p>\n<p>Basic\u00e1mente hemos creado la estructura de la aplicaci\u00f3n lo que resta es modificar el archivo miaplicacion\/apps\/frontend\/templates\/layout.php para definir el estilo para todas las ventanas ydemas configuraciones necesarias.<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Sin duda alguna se ha convertido en uno de los Frameworks de Desarrollo mas usado y popular que hay, quiz\u00e1 no sea el mejor pero si uno de los que mas documentaci\u00f3n en espa\u00f1ol tiene,\u00a0 symfony provee una arquitectura, componentes y herramientas para los desarrolladores que permiten\u00a0 construir complejas aplicaciones web mas rapidamente. Symfony sigue [&hellip;]<\/p>\n","protected":false},"author":20,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15],"tags":[40,2134,6876,6877,6875],"class_list":["post-18","post","type-post","status-publish","format-standard","hentry","category-web","tag-anadir-etiqueta-nueva","tag-php","tag-rad","tag-ria","tag-symfony"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/andresvargas\/wp-json\/wp\/v2\/posts\/18","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/andresvargas\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/andresvargas\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/andresvargas\/wp-json\/wp\/v2\/users\/20"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/andresvargas\/wp-json\/wp\/v2\/comments?post=18"}],"version-history":[{"count":4,"href":"https:\/\/blog.espol.edu.ec\/andresvargas\/wp-json\/wp\/v2\/posts\/18\/revisions"}],"predecessor-version":[{"id":20,"href":"https:\/\/blog.espol.edu.ec\/andresvargas\/wp-json\/wp\/v2\/posts\/18\/revisions\/20"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/andresvargas\/wp-json\/wp\/v2\/media?parent=18"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/andresvargas\/wp-json\/wp\/v2\/categories?post=18"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/andresvargas\/wp-json\/wp\/v2\/tags?post=18"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}