Symfony con MAMP

estuve jugando un rato con symfony y MAMP, y esta bastante bueno, aunque hay un par de cosas que no me gustaron. aqui van unos comentarios que te podran ser utiles.

me puse a leer las instrucciones de instalacion, y despues encontre el tutorial, de donde saco gran parte de lo que escribire en este articulo.

ahi dice que hay un archivo tgz que podes bajar de aca. se llama “sandbox” (caja de arena) y tiene todo listo y esta especialmente destinado para principiantes.

lo baje y lo descomprimi (haciendo doble click) en el web root - yo lo tengo seteado en ~/Sites, mira esta pantalla de configuracion de MAMP:

symfony1

entonces puse la carpeta sf_sandbox en ~/Sites/sf_sandbox.

como tengo el MAMP andando abris un browser y te vas a http://localhost/sf_sandbox/web/index.php/

primero no me anduvo porque tenia MAMP con la opcion “PHP 4″, y la cambie a “PHP 5″ y anduvo:

symfony3

fijate tambien en que puerto estan andando PHP y MySQL, esto se ve en MAMP tambien:

symfony4

si tenes otras opciones, tenes que ir a localhost:puerto/etc… en el browser veo esto:

symfony5

muy bonito realmente!

ahora abro la carpeta sf_sandbox con TextMate (con el mouse, la arrastras hasta el icono de TextMate en el dock)

symfony6

y sigo como dice el tutorial, creo un archivo “schema.yml” en sf_sandbox/config con este texto:

propel:
  post:
    id:          ~
    title:       varchar(255)
    excerpt:     longvarchar
    body:        longvarchar
    created_at:  ~
  comment:
    id:          ~
    post_id:     ~
    author:      varchar(255)
    email:       varchar(255)
    body:        longvarchar
    created_at:  ~

guay de mantener los espacios y las tabulaciones. “yml” es la extension que significa “YAML”, es decir, “Yet Another Markup Language” o en castizo “otro lenguaje mas de balizas”. es como el XML pero sin tantos “<” y “>”, y permite mostrar muy simplemente estructuras en forma de arbol. Exactamente.

symfony7

el archivo ya existia, lo rellene con el contenido de la pagina web. como veras, este archivo describe las tablas de la base de datos de manera simple, y totalmente agnostica del sistema que se usara luego (MySQL, PostreSQL, SQLite, etc).

abrite phpMyAdmin desde MAMP y create una base de datos llamada “symfony_project”

symfony11

ahora abrite /Applications/Utilities/Terminal.app y tipea estos comandos uno despues del otro:

$ sudo mkdir /var/mysql
$ sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /var/mysql/mysql.sock
$ cd ~/Sites/sf_sandbox/
$ php symfony propel:build-model

y te aparece un choclo de texto en la pantalla no? todo bien si aparece el texto “BUILD FINISHED” al final. este ultimo comando te genera clases en sf_sandbox/lib/model:

symfony8

ahora segui tipeando:

$ php symfony propel:build-sql $ php symfony propel:insert-sql

eso te genera un archivo lib.model.schema.sql en sf_sandbox/data/sql y despues se conecta a MySQL (fijate que este andando en MAMP!) y te crea las tablas de la base de datos:

symfony9

symfony14

bueno ahora podemos seguir creando nuestra aplicacion, a puro comando:

$ cd ~/Sites/sf_sandbox
$ php symfony propel:build-form

esto genera formularios a partir de las tablas de base de datos!

$ php symfony propel:generate-crud frontend post Post
$ php symfony propel:generate-crud frontend comment Comment
$ php symfony cache:clear

fijate que tu archivo databases.yml tenga esta estructura, borra las lineas que no esten aqui abajo, para estar seguro de que todo anda en local:

symfony13

en MAMP el user y password by default son “root” y “root”, fijate de poner tus valores en el campo “dsn”, ok? luego, navega hacia http://localhost/sf_sandbox/web/frontend_dev.php/post y mira, despues de entrar un “post” ves esto:

symfony12

listo! tu primera aplicacion symfony (incluso para mi fue un descubrimiento :) tambien podes agregar, modificar y borrar comentarios, of course. fijate el codigo PHP que genera, muy limpio y piola.

lo que no me gusto? bueno, primero intente hacerlo andar con SQLite y me mando al joraca. pasa que en Leopard viene instalada SQLite 3, y symfony esta basado en propel, el cual es (actualmente) incompatible con SQLite 3, y entonces tenes que instalar la version 2, con todo lo que ello significa. un bajon.

ademas, otra cosa es que cuando le das el comando para usar MySQL, no borra las referencias a SQLite (al menos no me lo hizo a mi) y entonces tuve que hacerlo manopla. aun peor, no encontre como cambiar el “socket” de MySQL (de /var/mysql/mysql.sock al de MAMP) y al final hice un link con la linea de comandos, lo cual es cualquiera. enfin, unas pelotudeces pero son cosas que te cortan un poco el envion, otro bajon.

saludos!