1. Instalación y Primeros
Pasos
Realizada por:
Diego Barros |@imnzombie
Diego Ramirez |@thedarsideofit
Para: Hydras C&S |@hydras_cs
Basada en Libro Symfony 2 en español Nacho Pacheco
2. Creando páginas en Symfony2
Dos pasos
● Crear una ruta.
● Crear un controlador
3. Creando páginas en Symfony2
La página «¡Hola Symfony!»
En realidad la palabra Symfony podrá ser
reemplazada por cualquier término
http://localhost/app_dev.php/hello/Symfony
4. Creando páginas en Symfony2
Creando el bundle
Este comando realiza dos cosas:
● Crea el directorio en src/Acme/HelloBundle
● Registra el bundle en el kernel de la
aplicación AppKernel
$ php app/console generate:bundle --
namespace=Acme/HelloBundle --format=yml
6. Creando páginas en Symfony2
Creando las acciones del controlador
// src/Acme/HelloBundle/Controller/HelloController.php
namespace AcmeHelloBundleController;
use SymfonyComponentHttpFoundationResponse;
class HelloController
{
public function indexAction($name)
{
return new Response('<html><body>Hello'
$name.'!</body></html>');
}
}
7. Creando páginas en Symfony2
Creando las acciones del controlador
// src/Acme/HelloBundle/Controller/HelloController.php
namespace AcmeHelloBundleController;
use SymfonyBundleFrameworkBundleControllerController;
class HelloController extends Controller
{
public function indexAction($name)
{
return $this->render(
'AcmeHelloBundle:Hello:index.html.twig',
array('name' => $name)
);
}
}
8. Creando páginas en Symfony2
Convenciones de nombres
Creando la plantilla con Twig
BundleName:ControllerName:TemplateName
/path/to/BundleName/Resources/views/ControllerName/Te
mplateName
{# src/Acme/HelloBundle/Resources/views/Hello/index.html.twig #}
{% extends '::base.html.twig' %}
{% block body %}
Hello {{ name }}!
{% endblock %}
9. Creando páginas en Symfony2
Estructura de la plantilla base
{# app/Resources/views/base.html.twig #}
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>{% block title %}Welcome!{% endblock %}</title>
{% block stylesheets %}{% endblock %}
<link rel="shortcut icon" href="{{ asset('favicon.ico') }}" />
</head>
<body>
{% block body %}{% endblock %}
{% block javascripts %}{% endblock %}
</body>
</html>
10. Estructura de Directorios
● app/: Este directorio contiene la configuración de la
aplicación;
● src/: Todo el código PHP del proyecto se almacena en este
directorio;
● vendor/: Por convención aquí se coloca cualquier biblioteca
de terceros;
● web/: Este es el directorio web raíz y contiene todos los
archivos de acceso público;
● El controlador frontal:
// web/app.php
require_once __DIR__.'/../app/bootstrap.php.cache';
require_once __DIR__.'/../app/AppKernel.php';
use SymfonyComponentHttpFoundationRequest;
$kernel = new AppKernel('prod', false);
$kernel->loadClassCache();
$kernel->handle(Request::createFromGlobals())->send();
11. Estructura de Directorios
Estructura de un bundle:
● Controller/ Contiene los controladores del paquete (por ejemplo,
HelloController.php);
● DependencyInjection/ mantiene ciertas extensiones para las clases de
inyección de dependencias, qué configuración puede importar el servicio,
registra uno o más pases del compilador (este directorio no es necesario);
● Resources/config/ Contiene la configuración, incluyendo la configuración
de enrutado (por ejemplo, routing.yml);
● Resources/views/ Contiene las plantillas organizadas por nombre de
controlador (por ejemplo, Hello/index.html.twig);
● Resources/public/ Contiene recursos web (imágenes, hojas de estilo,
etc.) y es copiado o enlazado simbólicamente al directorio web/ del
proyecto vía la orden de consola assets:install;
● Tests/ Tiene todas las pruebas para el paquete.
12. Entornos
Por defecto Symfony propone tres entornos:
● prod: sólo se registran los errores (log) y
utiliza la cache.
● dev: no se utiliza la cache, se muestran las
excepciones detalladas se muestra la
symfony developer toolbar
● test: se utiliza cuando se ejecutan pruebas
automáticas y no se puede acceder
directamente a través del navegador
14. ● Primero debemos verificar que nuestros servicios Apache y de
base de datos, ya sea PostgreSQL, MySQL, Mongo, etc.. estén en
funcionamiento.
● Posterior configurar los correspondientes servicios.
● Realizar la puesta en desarrollo y configurar el entorno.
Pasos a seguir:
15. Para el mayor enfoque sobre el framework en este
curso utilizaremos el paquete XAMPP(Apache,
MySQL, PHP, Perl)
16. Una vez realizada la instalación de XAMPP podemos
acceder al home a través del browser mediante la url:
http://localhost
17. Nos encontraremos con la información pertinente en lo respecta versión
funcionamiento del XAMPP, phpMyAdmin para administrar la Base de
Datos MySQL
18. Además cuenta con un panel administrador para establecer el estado de
los servicios
Ver los logs, configurar los archivos principales.
19. En las distribuciones de GNU Linux contamos con
un comando para visualizar los logs muy útil.
tail -f archivo.log
Nos permite ver en tiempo real el cambio en los
archivos logs
20. Para no dejar afuera a nadie buscamos algo similar
para windows:
tailforwin es una herramienta en la cual se cargan los
archivos a seguir y de la misma manera que el anterior
permite el análisis de los logs en tiempo real.
http://tailforwin32.sourceforge.net/
21. Posterior a la instalación del XAMPP no hace falta muchas
configuraciones sobre las herramientas.
XAMPP establece para la DB un usuario y una contraseña por default, y
las bibliotecas PHP se instalan, se configuran en el directorio
xamppphpphp.ini para ser habilitadas.
22. Puesta en desarrollo y configuración de Symfony2
Antes de empezar debemos crear dos directorios dentro del esquema de symfony2 el cache y el
directorio logs, los mismos se deberán crear en el interior de app/. Y mover el directorio con el
framework al htdocs del XAMPP.
Existen dos maneras de poner en marcha symfony2, mediante composer o descargando el archivo
comprimido.
Mediante composer:
% curl -s https://getcomposer.
org/installer | php
Guía windows(instalación de composer):
http://getcomposer.org/doc/00-intro.md#installation-
windows
Una vez instalado:
php.exe composer.phar create-project symfony/framework-standard-edition
/ruta/a/raizweb/Symfony dev-master
23. Descarga del archivo:
Si van a la página:
http://symfony.com/download
También tienen para elegir entre tgz o zip, que es solo el modo de compresión, y además con o sin
vendors, se recomienda para los desarrolladores que posean el cliente GIT sin vendors por la
flexibilidad de instalar sofrware de terceros.
Si optamos por el pack que viene sin vendors, vamos a tener que instalar composer de igual manera
que se mencionó anteriormente. Solo que en vez de instalar symfony2 correremos el siguiente
comando
php.exe composer.phar install
En algunos casos la conexión es muy lenta el proceso de actualización o instalación
por lo que debe acompañarse del seteo de variable
COMPOSER_PROCESS_TIMEOUT=300 php.exe composer.phar update
24. Una vez concluido podemos empezar el tour probando lo mencionado anteriormente:
podemos ir al browser y tipear:
http://localhost/app_dev.php/
25. Últimos tips, para administrar las bases de datos
vía WEB podemos usar:
http://www.phpmyadmin.net/home_page/index.php (MySQL)
http://phppgadmin.sourceforge.net/doku.php (PostgreSQL)
https://github.com/jwage/php-mongodb-admin (MongoDB)