Introducción al desarrollo con
eugeniaperez.es
Comunicación HTTP
Interacción cliente - servidor
eugeniaperez.es
Primera aplicación
Comenzaremos desarrollando una aplicación Symfony que reciba una edad por la URL y te muestre el año de nacimiento.
eugeniaperez.es
http://localhost/test_project/web/calculator/20
Primera aplicación
Bundles
Todo código debe residir en un bundle.
Es un módulo reutilizable dentro de la aplicación.
Sólo debes poner en un bundle lógica que se supone que puede ser reutilizable en otra aplicación.
eugeniaperez.es
InvoiceBundle, UserBundle, etc.
Primera aplicación Symfony
Estructura de una aplicación Symfony:
- app/Resources: almacena las vistas y archivos de internacionalización.
- app/config: configuración del entorno.
- app/logs: ficheros de log.
- src/AppBundle: almacena los controladores y rutas de Symfony, modelo de dominio y la lógica de negocio.
- vendor: dependencias de la aplicación.
- web: almacena todos los recursos estáticos de la aplicación, imágenes, hojas de estilo, JavaScript, etc.
eugeniaperez.es
Primera aplicación Symfony
Rutas
eugeniaperez.es
La definición de rutas en el archivo app/config/rounting.yml.
Las dos maneras de definir las rutas:
- Explícitamente en este archivo.
- Mediante anotaciones.
Primera aplicación Symfony
Rutas
eugeniaperez.es
app:
path: /calculator/{age}
defaults: {_controller: AppBundle:Calculator:index}
Por ejemplo, dentro app/config/rounting.yml
Maneja la petición de tipo GET a la ruta: /controlador/{age}
Primera aplicación Symfony
Rutas
eugeniaperez.es
class CalculatorController extends Controller {
public function indexAction($age) {
$currentYear = date('Y');
return new Response('<html><body>Current year: ' . $currentYear .
'<br/>Year of birth: ' . ($currentYear - $age) .
'</body></html>');
}
}
La clase Controlador que recibe la edad:
Primera aplicación Symfony
Plantillas y vistas
eugeniaperez.es
Anteriormente se retorna código HTML para ser mostrado al usuario. ¡No es mantenible!
Lo mejor es definir vistas en ficheros independientes, y desde los controladores enviar redirecciones (método render) con los datos a pasar (array asociativo).
Primera aplicación Symfony
Plantillas y vistas
eugeniaperez.es
La plantilla se guarda en:
app > Resources > views > calculator
{% extends 'base.html.twig' %}
{% block body %}
Year of birth: {{year}}
{% endblock %}
Primera aplicación Symfony
El directorio web
eugeniaperez.es
Almacena recursos estáticos:
- JavaScript,
- CSS,
- imágenes,
- front controllers: se ejecutan para lanzar e inicializar una aplicación Symfony.
Primera aplicación Symfony
El directorio web
eugeniaperez.es
Con el front controller la URL con respecto a PHP tradicionales. En el ejemplo anterior:
http://localhost/test_project/web/app_dev.php/calculator/20
Donde app_dev.php es un front controller.
Si queremos omitir el front controller, deberíamos trabajar en la implementación de redirecciones, mediante el módulo mod_rewrite de Apache.
Primera aplicación Symfony
Entornos de producción
eugeniaperez.es
Se definen por defecto 3 entornos: dev, test y prod, que se corresponden con desarrollo, pruebas y producción.
Es muy necesario distinguir entre dichos entornos...
Modo dev: http://localhost/test_project/web/app_dev.php/calculator/20
Modo prod: http://localhost/test_project/web/app.php/calculator/20
UT3. Introducción al desarrollo con Symfony
By eugenia_perez
UT3. Introducción al desarrollo con Symfony
- 1,033