Ver índice de contenidos del libro

12.1. Creando la aplicación backend

Lo primero que tenemos que hacer es crear la aplicación backend. Si no te falla la memoria, te acordarás de que las aplicaciones de Symfony se crean con la tarea generate:app:

$ php symfony generate:app --escaping-strategy=on --csrf-secret=UniqueSecret1 backend

Aunque la aplicación backend sólo la van a utilizar los administradores de Jobeet, hemos activado todas las medidas de seguridad que incluye Symfony.

Nota Si quieres utilizar caracteres especiales en la contraseña de la opción --csrf-secret, como por ejemplo un signo de dólar ($), tienes que escapar cada carácter especial en la línea de comandos mediante la barra \:

$ php symfony generate:app --csrf-secret=Unique\$ecret backend

Después de ejecutar la tarea, ya puedes acceder a la nueva aplicación en http://jobeet.localhost/backend.php/ para el entorno de producción y en http://jobeet.localhost/backend_dev.php/ para el entorno de desarrollo.

Nota Cuando creamos la aplicación frontend, el controlador frontal de producción se llamaba index.php. Como sólo se puede tener un archivo index.php en cada directorio, Symfony crea un archivo llamado index.php para el controlador frontal de la primera aplicación y el resto de controladores frontales se llaman igual que el resto de aplicaciones.

Si ahora intentas volver a cargar los archivos de datos con la tara propel:data-load, verás que ya no funciona. El motivo es que el método JobeetJob::save() debe tener acceso al archivo de configuración app.yml de la aplicación frontend. Como ahora tenemos dos aplicaciones, Symfony utiliza el primer archivo app.yml que encuentra, que en este caso es el de la aplicación backend.

No obstante, como vimos durante el tutorial del día 8, las opciones de configuración se establecen en diferentes niveles. Si copias el contenido del archivo apps/frontend/config/app.yml al archivo config/app.yml, las opciones de configuración están disponibles en todas las aplicaciones del proyecto y por tanto, se corrige el error anterior. Realiza el cambio ahora porque el generador de la parte de administración utiliza mucho las clases del modelo y por tanto, también vamos a necesitar en la aplicación backend las variables definidas en el archivo app.yml.

Nota La tarea propel:data-load también permite el uso de la opción --application. De esta forma, si necesitas acceder a las opciones específicas de una aplicación, debes ejecutar la tarea con esta opción:

$ php symfony propel:data-load --application=frontend