eugeniaperez.es
Interacción cliente - servidor
eugeniaperez.es
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
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.
Estructura de una aplicación Symfony:
eugeniaperez.es
eugeniaperez.es
La definición de rutas en el archivo app/config/rounting.yml.
Las dos maneras de definir las rutas:
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:
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 %}
eugeniaperez.es
Almacena recursos estáticos:
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.
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