SlideShare una empresa de Scribd logo
Monday, June 24, 13
Monday, June 24, 13
¿Quién soy?
⁃ Argentino viviendo en Estados Unidos desde 1999
⁃ Desarrollador PHP & Symfony
⁃ Fundador de la primera lista de discusión de PHP
de habla hispana
⁃ Socio fundador de ServerGrove
⁃ Amante de la parrilla
Monday, June 24, 13
Monday, June 24, 13
Monday, June 24, 13
⁃ Fundada en 2005
⁃ Proveedor de servicios de hosting especializado en PHP,
Symfony, ZendFramework, y otros
⁃ Servidores en Europa y Estados Unidos
ServerGrove!
Monday, June 24, 13
⁃ Muy activos en la comunidad de Open Source
contribuyendo con código o patrocinando eventos y
grupos de usuarios
La comunidad es nuestra guia
Monday, June 24, 13
En el comienzo teniamos HTML...
Monday, June 24, 13
Monday, June 24, 13
Luego vino JavaScript
Monday, June 24, 13
Luego vino JavaScript
y no era ‘cool’...
Monday, June 24, 13
Pero era algo serio!
Monday, June 24, 13
Pero era algo serio!
Monday, June 24, 13
Pero era algo serio!
Monday, June 24, 13
Usos muy importantes
Monday, June 24, 13
Rollovers!
Monday, June 24, 13
http://joemaller.com/javascript/simpleroll/simpleroll_example.html
Rollovers!
Monday, June 24, 13
Monday, June 24, 13
Y luego vino AJAX...
Monday, June 24, 13
AJAX salvó a Internet!
Monday, June 24, 13
2004 - 2006
Monday, June 24, 13
Monday, June 24, 13
Nueva generación de
Frameworks JavaScript
Monday, June 24, 13
Monday, June 24, 13
Introducción a
•100% JavaScript
•MVC
•Con fuerte opinión
•Modular & Extensible
•Servicios & Injección de Dependencias
•Simple pero poderosa maquetación
•Data-binding en el cielo
•Validación de Ingreso de Datos
•Animaciones! (nuevo)
•Testeable
•Muchas cosas más...
Monday, June 24, 13
•Aplicaciones de una página
•Dinámicas & Receptivas
•Interactivas & en tiempo real
•Interfaz de usuario rica & amigable
•I18n & L10n
•Multi-plataforma
•Escritorio/Móvil
•Animaciones
•Control con comandos de voz
¿ Qué podemos hacer?
Introducción a
Monday, June 24, 13
<!doctype html>
<html ng-app>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/
1.0.6/angular.min.js"></script>
</head>
<body>
<div>
<label>Nombre:</label>
<input type="text" ng-model="nombre" placeholder="Ingrese
su nombre">
<hr>
<h1>Hola {{nombre}}!</h1>
</div>
</body>
</html>
Plantillas
Monday, June 24, 13
Plantillas &
Directivas
<!doctype html>
<html ng-app>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/
1.0.6/angular.min.js"></script>
</head>
<body>
<div>
<label>Nombre:</label>
<input type="text" ng-model="nombre" placeholder="Ingrese
su nombre">
<hr>
<h1>Hola {{nombre}}!</h1>
</div>
</body>
</html>
Monday, June 24, 13
•ng-app
•ng-controller
•ng-model
•ng-bind
•ng-repeat
•ng-show & ng-hide
•tus propias directivas
•y muchas más!
http://docs.angularjs.org/api/ng
Directivas
Monday, June 24, 13
ng-app
<html>
...
<body>
...
<div ng-app>
...
</div>
Inicia la aplicación y define la raíz. Puede haber uno solo por
documento HTML.
<html>
...
<body ng-app>
...
<html ng-app>
...
Directivas
Monday, June 24, 13
ng-controller
<html ng-app>
<body>
<div ng-controller=”PruebaController”>
Hola {{nombre}}
</div>
<script>
function PruebaController($scope) {
$scope.nombre = ‘Pablo’;
}
</script>
</body>
</html>
Define el controlador (función) relacionada con la vista.
Directivas
Monday, June 24, 13
ng-model
<html ng-app>
<body>
<div>
<input type=”text” ng-model=”nombre” />
<input type=”textarea” ng-model=”notas” />
<input type=”checkbox” ng-model=”notificacion” />
</div>
</body>
</html>
Define ‘data binding’ de ida/vuelta con input, select, textarea.
Directivas
Monday, June 24, 13
ng-bind
<html ng-app>
<body>
<div>
<div ng-bind=”nombre”></div>
{{nombre}} <!- más acotado -->
</div>
</body>
</html>
Reemplaza el contenido del elemento HTML con el valor
indicado en la expresión, y actualiza el contenido cuando el
valor de la expresión cambia.
Directivas
Monday, June 24, 13
ng-repeat
<html ng-app>
<body>
<div>
<ul>
<li ng-repeat="item in items">
{{$index}}: {{item.nombre}}
</li>
</ul>
</div>
</body>
</html>
Instancia una plantilla por item de una colección. Cada
plantilla tendrá su propio ‘scope’.
Directivas
Monday, June 24, 13
ng-show & ng-hide
<html ng-app>
<body>
<div>
Aprétame: <input type="checkbox" ng-model="checked"><br/>
<span ng-show="checked">Sí!</span>
<span ng-hide="checked">Oculto.</span>
</div>
</body>
</html>
Muestra/Oculta una porción del arbol del DOM (HTML)
condicionalmente.
Directivas
Monday, June 24, 13
Directivas propias
<html ng-app>
<body>
<div>
Formato de Fecha: <input ng-model="format"> <hr/>
Hora actual es: <span my-current-time="format"></span>
</div>
</body>
</html>
Puedes crear nuevas directivas para extender el HTML.
Encanpsula resultados complejos en simples llamadas.
Directivas
Monday, June 24, 13
$scope
function SaludaCtrl($scope) {
$scope.nombre = 'Mundo';
}
 
function ListaCtrl($scope) {
$scope.nombres = ['Igor', 'Misko', 'Vojta'];
$scope.pop = function() {
$scope.nombres.pop();
}
}
...
<button ng-click=”pop()”>Sacar</button>
El ‘scope’ mantiene el modelo de datos por
controlador. Detecta cambios en el modelo para
actualizar la vista automáticamente.
http://docs.angularjs.org/guide/scope
Modelo
Monday, June 24, 13
•Una conjunto de bloques de configuración y ejecución
que son aplicados a la aplicación durante el proceso
de inicialización.
•Código de terceros puede ser enpaquetado en
módulos y re-usados en varias aplicaciones
•Módulos pueden listar otros módulos como
depencencias
•Módulos son una forma de manejar la configuración
del $injector
•Una aplicación de AngularJS es un Módulo
http://docs.angularjs.org/guide/module
Módulos
Monday, June 24, 13
http://docs.angularjs.org/guide/module
<html ng-app=”myApp”>
<body>
<div ng-controller=”AppCtrl”>
Hola {{nombre}}
</div>
</body>
</html>
var app = angular.module('myApp', []);
app.controller( 'AppCtrl', function($scope) {
$scope.nombre = 'Juan';
});
Módulos
Monday, June 24, 13
Los filtros transforman datos a una nueva forma.
Pueden ser encadenados, y pueden recibir
argumentos opcionales
{{ expresion | filter }}
{{ expresion | filter1 | filter2 }}
123 | number:2
miArray | orderBy:'campo':true
Filtros
Monday, June 24, 13
angular.module('ReversibleModule', []).
filter('reverso', function() {
return function(entrada, capitalizar) {
var salida = "";
// ...
return salida;
}
});
Reverso: {{greeting|reverso}}<br>
Reverso + capitalizado: {{greeting|reverso:true}}
Creando Filtros
Monday, June 24, 13
$routeProvider.
when("/sin_autenticacion",{controller:SinAutenticacionCtrl,
templateUrl:"app/sin-autenticacion.html"}).
when("/databases", {controller:DatabasesCtrl,
templateUrl:"app/databases.html"}).
when("/databases/agregar", {controller:AgregarDatabaseCtrl,
templateUrl:"app/agregar-database.html"}).
otherwise({redirectTo: '/databases'});
Enrutamiento
•http://example.org/#/sin_autenticacion
•http://example.org/#/databases
•http://example.org/#/databases/agregar
Monday, June 24, 13
Servicios
Servicios son ‘singletons’ que cumplen tareas específicas y
comunes en aplicaciones web. Angular provee una serie de
servicios para operaciones comunes.
•$location - parsea la URL de la dirección del navegador.
Cambios en el $location son reflejados en la barra de
dirección del navegador
•$http - facilita la comunicación con servidores HTTP usando
el XMLHttpRequest del navegador o JSONP
•$resource - permite interactuar con servidores RESTful
http://docs.angularjs.org/guide/dev_guide.services
Monday, June 24, 13
+
Monday, June 24, 13
• API REST
• Silex + responsible-service-provider
• Symfony2 + RestBundle
• ZF2 + ZfrRest
• WebSockets
• React/Ratchet
• node.js
• AngularJS + Twig = Mola!
• AngularJS + Assetic = Menor tamaño
+
Monday, June 24, 13
<div> {{nombre}} </div> <!-- usado por twig -->
{% raw %}
<div> {{nombre}} </div> <!-- usado por AngularJS -->
{% endraw %}
AngularJS + Twig - Evitando conflictos
+
// modulo de configuración de la aplicación
$interpolateProvider.startSymbol('[[').endSymbol(']]')
....
<div> [[nombre]] </div> <!-- usado por AngularJS -->
Monday, June 24, 13
// _users.html.twig
<script type="text/ng-template" id="users.html">
...
</script>
// _groups.html.twig
<script type="text/ng-template" id="groups.html">
...
</script>
// index.html.twig
{% include '_users.html.twig' %}
{% include '_groups.html.twig' %}
AngularJS + Twig - Precargar plantillas
+
Monday, June 24, 13
{% javascripts
"js/angular-modules/mod1.js"
"js/angular-modules/mod2.js"
"@AppBundle/Resources/public/js/controller/*.js"
output="compiled/js/app.js"
%}
<script type="text/javascript" src="{{ asset_url }}"></script>
{% endjavascripts %}
AngularJS + Assetic - Combinar & minimizar
+
Monday, June 24, 13
Muéstrame el CODIGO!
+
Monday, June 24, 13
+
Podisum http://github.com/pgodel/podisum
gitDVR http://github.com/pgodel/gitdvr
Genera resumenes de eventos de Logstash
Aplicación Silex
Plantillas de Twig
API REST
UI avanzada con AngularJS
Reproduce commits de git
Monday, June 24, 13
+
Podisum
Apache access_log Logstash
Redis
Podisum redis-client
MongoDB
Podisum Silex App
Web Client
Monday, June 24, 13
•http://ngmodules.org/
•http://angular-ui.github.io/
•https://github.com/angular/angularjs-batarang
•https://github.com/angular/angular-seed
•https://github.com/angular-adaptive/adaptive-speech
•Animaciones: http://bit.ly/Z4WD7X
•Prueba las APIs REST con la extensión de Chrome ‘Postman’
Extras
Monday, June 24, 13
¿Preguntas?
+
Monday, June 24, 13
¡Muchas Gracias!
Sugerencias! https://joind.in/8833
Transparencias: http://slideshare.net/pgodel
Twitter: @pgodel
E-mail: pablo@servergrove.com
Monday, June 24, 13

Más contenido relacionado

ODP
Desarrollo Web Ágil con Symfony, Bootstrap y Angular
PDF
Desymfony 2011 - Introducción a Symfony2
PDF
Desymfony 2011 - Tutorial #1: Instalacion y primeros pasos
ODP
Tutorial3 Desymfony - La Vista. Twig
PDF
Desymfony 2011 - Twig
PDF
Symfony en Drupal 8 - DrupalCamp Spain
PDF
Silex, desarrollo web ágil y profesional con PHP
PDF
Symfony2, Jornadas Symfony
Desarrollo Web Ágil con Symfony, Bootstrap y Angular
Desymfony 2011 - Introducción a Symfony2
Desymfony 2011 - Tutorial #1: Instalacion y primeros pasos
Tutorial3 Desymfony - La Vista. Twig
Desymfony 2011 - Twig
Symfony en Drupal 8 - DrupalCamp Spain
Silex, desarrollo web ágil y profesional con PHP
Symfony2, Jornadas Symfony

La actualidad más candente (20)

PDF
Desymfony 2011 - Tutorial #5: Backend
PDF
Las buenas prácticas oficiales para aplicaciones Symfony
PDF
Composer: Gestionando dependencias en PHP
PDF
Clase 2 conceptos fundamentales
PDF
Introducción a Silex. Aprendiendo a hacer las cosas bien en PHP
PPTX
CRUD básico con Symfony
PDF
PHP en el 2015
PDF
Código mantenible, en Wordpress.
PDF
Introducción al microframework PHP Silex - Sergio Gómez - Betabeers Córdoba 0...
PDF
Introducción a PHP - Programador PHP - UGR
PDF
Clase 5 controller
PDF
desarrolo de sitios web php y mysql
PDF
Materiales del curso de Symfony2
PDF
Curso php y_mysql
PPT
Php Bitter Sweet Symfony!
PPTX
PowerShell para administradores
ODP
Symfony2: Framework para PHP5
ODP
Desarrollo de aplicaciones web usando Catalyst y jQuery
PDF
Masterclass PHP 5.3
PDF
4.Programación con PHP y MySQL
Desymfony 2011 - Tutorial #5: Backend
Las buenas prácticas oficiales para aplicaciones Symfony
Composer: Gestionando dependencias en PHP
Clase 2 conceptos fundamentales
Introducción a Silex. Aprendiendo a hacer las cosas bien en PHP
CRUD básico con Symfony
PHP en el 2015
Código mantenible, en Wordpress.
Introducción al microframework PHP Silex - Sergio Gómez - Betabeers Córdoba 0...
Introducción a PHP - Programador PHP - UGR
Clase 5 controller
desarrolo de sitios web php y mysql
Materiales del curso de Symfony2
Curso php y_mysql
Php Bitter Sweet Symfony!
PowerShell para administradores
Symfony2: Framework para PHP5
Desarrollo de aplicaciones web usando Catalyst y jQuery
Masterclass PHP 5.3
4.Programación con PHP y MySQL
Publicidad

Destacado (20)

PPT
Symfony2 and AngularJS
PPT
Building Single Page Application (SPA) with Symfony2 and AngularJS
ODP
Mojolicious on Steroids
PDF
Symfony Components
PDF
Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony
PPT
Adentrándonos al Framework Symfony
PDF
Aplicaciones web
PDF
Symfony. La guia definitiva
PPTX
Curso AngularJS - 1. introducción
PDF
Symfony + AngularJS | Mladen Plavsic @DaFED26
PDF
Symfony and Angularjs
POTX
Leveraging Social Media to Grow Your Business
PDF
Lista de-precios-compugreiff-enero-14-2014
PDF
Un mundo 2.0: Charlas para padres y madres sobre Internet y Redes Sociales
PDF
Leveraging Social Media: Tweet Me - Like Me - Buy Me
PDF
Argyle CMO Summit, Boston 2015
PDF
Nafees Butt - The bachelorette, a quest for scrum master
PDF
Profile
PDF
IHS Pain Relief
Symfony2 and AngularJS
Building Single Page Application (SPA) with Symfony2 and AngularJS
Mojolicious on Steroids
Symfony Components
Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony
Adentrándonos al Framework Symfony
Aplicaciones web
Symfony. La guia definitiva
Curso AngularJS - 1. introducción
Symfony + AngularJS | Mladen Plavsic @DaFED26
Symfony and Angularjs
Leveraging Social Media to Grow Your Business
Lista de-precios-compugreiff-enero-14-2014
Un mundo 2.0: Charlas para padres y madres sobre Internet y Redes Sociales
Leveraging Social Media: Tweet Me - Like Me - Buy Me
Argyle CMO Summit, Boston 2015
Nafees Butt - The bachelorette, a quest for scrum master
Profile
IHS Pain Relief
Publicidad

Similar a deSymfony 2013 - Creando aplicaciones web desde otro ángulo con Symfony y AngularJS (20)

PPTX
Introducción a AngularJS
PPTX
Introduccion a AngularJS
PPTX
Angular Conceptos Practicos 1
PDF
Angular js
PDF
Carrera de fondo - La continuada lucha de AngularJS - CodeMotion 2015
PPTX
Advanced angular 1
PDF
Angular js
PPTX
Ruby on Rails y AngularJS
PDF
Introducciòn a AngularJS
PPTX
PPTX
Introducción a AngularJS
PDF
Despegar Tech Talk - AngularJS
PPTX
Introducción a AngularJS
PDF
De HTML a Express
PDF
Curso Básico de AngularJS
PDF
Desarrollo de aplicaciones multiplataforma 2/2
PPTX
Angular Fundamentals
PDF
JAVA ANGULAR - CURSO JAVASCRIPT AVANZADO
PPTX
AngularJS2
PPTX
Presentacion node
Introducción a AngularJS
Introduccion a AngularJS
Angular Conceptos Practicos 1
Angular js
Carrera de fondo - La continuada lucha de AngularJS - CodeMotion 2015
Advanced angular 1
Angular js
Ruby on Rails y AngularJS
Introducciòn a AngularJS
Introducción a AngularJS
Despegar Tech Talk - AngularJS
Introducción a AngularJS
De HTML a Express
Curso Básico de AngularJS
Desarrollo de aplicaciones multiplataforma 2/2
Angular Fundamentals
JAVA ANGULAR - CURSO JAVASCRIPT AVANZADO
AngularJS2
Presentacion node

Más de Pablo Godel (20)

PDF
SymfonyCon Cluj 2017 - Symfony at OpenSky
PDF
Symfony Live San Francisco 2017 - Symfony @ OpenSky
PDF
DeSymfony 2017 - Symfony en OpenSky
PDF
Deploying Symfony | symfony.cat
PDF
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
PDF
La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
PDF
Symfony Live NYC 2014 - Rock Solid Deployment of Symfony Apps
PDF
The Modern Developer Toolbox
PDF
PHP Conference Argentina 2013 - Independizate de tu departamento IT - Habilid...
PDF
PHP Conference Argentina 2013 - Deployment de aplicaciones PHP a prueba de balas
PDF
php[architect] Summit Series DevOps 2013 - Rock solid deployment of PHP apps
PDF
Lone Star PHP 2013 - Sysadmin Skills for PHP Developers
PDF
Lone StarPHP 2013 - Building Web Apps from a New Angle
PDF
Creating Mobile Apps With PHP & Symfony2
PDF
Tek13 - Creating Mobile Apps with PHP and Symfony
PDF
Tek 2013 - Building Web Apps from a New Angle with AngularJS
PDF
Soflophp 2013 - SysAdmin skills for PHP developers
PDF
Symfony2 and MongoDB - MidwestPHP 2013
PDF
Rock Solid Deployment of Web Applications
PDF
Codeworks'12 Rock Solid Deployment of PHP Apps
SymfonyCon Cluj 2017 - Symfony at OpenSky
Symfony Live San Francisco 2017 - Symfony @ OpenSky
DeSymfony 2017 - Symfony en OpenSky
Deploying Symfony | symfony.cat
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
Symfony Live NYC 2014 - Rock Solid Deployment of Symfony Apps
The Modern Developer Toolbox
PHP Conference Argentina 2013 - Independizate de tu departamento IT - Habilid...
PHP Conference Argentina 2013 - Deployment de aplicaciones PHP a prueba de balas
php[architect] Summit Series DevOps 2013 - Rock solid deployment of PHP apps
Lone Star PHP 2013 - Sysadmin Skills for PHP Developers
Lone StarPHP 2013 - Building Web Apps from a New Angle
Creating Mobile Apps With PHP & Symfony2
Tek13 - Creating Mobile Apps with PHP and Symfony
Tek 2013 - Building Web Apps from a New Angle with AngularJS
Soflophp 2013 - SysAdmin skills for PHP developers
Symfony2 and MongoDB - MidwestPHP 2013
Rock Solid Deployment of Web Applications
Codeworks'12 Rock Solid Deployment of PHP Apps

Último (20)

PDF
diagrama de pareto.pdf valerie giraldo diaz
PDF
Conceptos básicos de programación tecnología.pdf
DOCX
Las nuevas tecnologías en la salud - enfermería técnica.
PPTX
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
DOCX
Trabajo colaborativo Grupo #2.docxmmuhhlk
PPTX
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
PPTX
Introduccion a servidores de Aplicaciones (1).pptx
PDF
Estrategia de apoyo tecnología miguel angel solis
PDF
Maste clas de estructura metálica y arquitectura
PDF
operaciones unitarias clase 1 1-2025-1.pdf
PPTX
INTERNET DE LAS COSAS EN LA ACTUALIDAD.pptx
PDF
La electricidad y la electrónica por Antonia Diaz Bernal
PPTX
ExcelTablasDinamicas01nivelintermedio.pptx
PDF
Temas y subtemas de las fichas 1 y 2.pdf
PPTX
ExcelTablasDinamicas02nivelintermedio.pptx
PPTX
Descubre los Dispositivos de Salida y Como usar
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
PDF
10-4o-04 La purificación del santuario.pdf
PDF
ACTIVIDAD 2.pdf j
PDF
Aristoteles-y-su-forma-de-entender-el-conocimiento-y-las-personas.pdf
diagrama de pareto.pdf valerie giraldo diaz
Conceptos básicos de programación tecnología.pdf
Las nuevas tecnologías en la salud - enfermería técnica.
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
Trabajo colaborativo Grupo #2.docxmmuhhlk
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
Introduccion a servidores de Aplicaciones (1).pptx
Estrategia de apoyo tecnología miguel angel solis
Maste clas de estructura metálica y arquitectura
operaciones unitarias clase 1 1-2025-1.pdf
INTERNET DE LAS COSAS EN LA ACTUALIDAD.pptx
La electricidad y la electrónica por Antonia Diaz Bernal
ExcelTablasDinamicas01nivelintermedio.pptx
Temas y subtemas de las fichas 1 y 2.pdf
ExcelTablasDinamicas02nivelintermedio.pptx
Descubre los Dispositivos de Salida y Como usar
Zarate Quispe Alex aldayir aplicaciones de internet .docx
10-4o-04 La purificación del santuario.pdf
ACTIVIDAD 2.pdf j
Aristoteles-y-su-forma-de-entender-el-conocimiento-y-las-personas.pdf

deSymfony 2013 - Creando aplicaciones web desde otro ángulo con Symfony y AngularJS