SlideShare une entreprise Scribd logo
1  sur  53
Télécharger pour lire hors ligne
FGSL: É permitida a reprodução deste material desde que citada a fonte
Zend Framework e Dojo Toolkit
Flávio Gomes da Silva Lisboa
flaviogomesdasilva@yahoo.com.br
www.fgsl.eti.br
FGSL: É permitida a reprodução deste material desde que citada a fonte
Agenda
● Quem sou eu (1 slide)
● Javascript, AJAX, RIA
● Dojo Toolkit
● Zend Framework
● Zend_Dojo
FGSL: É permitida a reprodução deste material desde que citada a fonte
Quem sou eu
FGSL: É permitida a reprodução deste material desde que citada a fonte
Ah, se a Web fosse Desktop...
AJAX (Asynchronous Javascript And XML)
RIA
Web 2.0
FGSL: É permitida a reprodução deste material desde que citada a fonte
Dojo Toolkit
http://www.dojotoolkit.org/
FGSL: É permitida a reprodução deste material desde que citada a fonte
Dojo Toolkit
Dojo Toolkit é uma caixa de ferramentas
Javascript open-source útil para construir
ótimas aplicações web.
FGSL: É permitida a reprodução deste material desde que citada a fonte
Dojo Toolkit
O objetivo é encurtar o tempo gasto entre a idéia e a
implementação ao prover uma API
excepcionalmente bem concebida e um conjunto de
ferramentas para auxiliar e corrigir os problemas
experimentados no dia-a-dia do desenvolvimento
web.
FGSL: É permitida a reprodução deste material desde que citada a fonte
Dojo Toolkit
Ele é leve, extremamente robusto, e fornece um
sólido conjunto de ferramentas para manipulação
DOM, animações, Ajax, eventos, internacionalização
(i18n) e accessibilidade (a11y).
FGSL: É permitida a reprodução deste material desde que citada a fonte
Dojo Toolkit
Dojo é completamente livre e desenvolvido de
forma transparente por um grupo ativo de
desenvolvedores com uma comunidade
fortemente presente.
FGSL: É permitida a reprodução deste material desde que citada a fonte
Dojo Toolkit
Alô Mundo:
Baixe o Dojo Toolkit (dojo-release-1.x.y)
Copie as pastas dojo, dojox e dijit para seu
diretório de Javascripts (por exemplo, js na
raiz do diretório Web)
FGSL: É permitida a reprodução deste material desde que citada a fonte
Dojo Toolkit
<html>
<head>
<title>Installed!</title>
<script src="js/dojo/dojo.js"></script>
</head>
<body>
<h1>Hello, Dojo</h1>
</body>
</html>
FGSL: É permitida a reprodução deste material desde que citada a fonte
Dojo Toolkit
MAS,
CARAMBA,
NÃO
ACONTECEU
NADA!
http://pt.wikipedia.org/wiki/Homem_de_ferro
FGSL: É permitida a reprodução deste material desde que citada a fonte
Dojo Toolkit
ENTÃO ESTÁ
TUDO CERTO,
PORQUE NÃO
FIZEMOS NADA
AINDA!
http://pt.wikipedia.org/wiki/Adam_strange
FGSL: É permitida a reprodução deste material desde que citada a fonte
Dojo Toolkit: debug de página
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Dojo Toolkit Test Page</title>
<!-- load the dojo toolkit base -->
<script type="text/javascript" src="js/dojo/dojo.js"
djConfig="parseOnLoad:true,
isDebug:true"></script>
FGSL: É permitida a reprodução deste material desde que citada a fonte
Dojo Toolkit: debug de página
<script type="text/javascript">
/* our JavaScript will go here */
</script>
<style type="text/css">
/* our CSS can go here */
</style>
</head>
<body><!-- this is a Typical WebPage starting point ...
-->
<h1 id="testHeading">Dojo Skeleton Page</h1>
<div id="contentNode">
<p>Some Content To Replace</p>
</div>
</body>
</html>
FGSL: É permitida a reprodução deste material desde que citada a fonte
Dojo Toolkit: página carregada
// a very common method of loading code onLoad
var init = function(){
console.log("I run after the page is ready.");
};
dojo.addOnLoad(init);
// and/or pass an anonymous function
dojo.addOnLoad(function(){
console.log("I also run, but second. ");
});
NÃO PRECISA DE
<body onLoad="someFunc">
FGSL: É permitida a reprodução deste material desde que citada a fonte
Dojo Toolkit: alterando o
conteúdo de tags HTML pelo id
dojo.require("dijit.form.Button");
dojo.require("dijit.TitlePane");
dojo.addOnLoad(function(){
dojo.byId("testHeading").innerHTML = "We're on our
way!";
console.log("onLoad fires after require() is done");
});
FGSL: É permitida a reprodução deste material desde que citada a fonte
Dojo Toolkit: alterando o CSS
<script type="text/javascript">
dojo.require("dojo.NodeList-fx");
dojo.addOnLoad(function(){
// get each element with class="para"
dojo.query(".para")
.addClass("testClass")
.fadeOut({ delay: 1000 }).play();
});
</script>
FGSL: É permitida a reprodução deste material desde que citada a fonte
Dojo Toolkit: eventos
<script type="text/javascript">
dojo.addOnLoad(function(){
var node = dojo.byId("testHeading");
dojo.connect(node,"onclick",function(){
node.innerHTML = "I've been clicked";
});
});
...
<body><!-- this is a Typical WebPage starting point ...
-->
<a id="testHeading" href="#">Click here</a>
</body>
FGSL: É permitida a reprodução deste material desde que citada a fonte
Dojo Toolkit: animações
<script type="text/javascript">
dojo.addOnLoad(function(){
dojo.style("testHeading","opacity","0"); // hide it
var anim1 = dojo.fadeOut({ node: "testHeading",
duration:700 });
var anim2 = dojo.animateProperty({
node: "testHeading", delay: 1000,
properties:{
// fade back in and make text bigger
opacity: { end: 1 }, fontSize: { end:19,
unit:"pt"}
}
});
anim1.play();
anim2.play();
});
FGSL: É permitida a reprodução deste material desde que citada a fonte
Dojo Toolkit: animações FX
<script type="text/javascript">
dojo.require("dojo.fx");
dojo.addOnLoad(function(){
var anim = dojo.fadeOut({ node: "testHeading",
delay: 1000 });
var anim2 = dojo.fx.slideTo({ node:
"testHeading", top:75,
left:75 });
var result = dojo.fx.combine([anim,anim2]);
result.play();
});
FGSL: É permitida a reprodução deste material desde que citada a fonte
Dojo Toolkit: AJAX
<script type="text/javascript">
var init = function(){
var contentNode = dojo.byId("content");
dojo.xhrGet({
url: "js/sample.txt",
handleAs: "text",
load: function(data,args){
// fade out the node we're modifying
dojo.fadeOut({
node: contentNode,
onEnd: function(){
// set the data, fade it back in
contentNode.innerHTML = data;
dojo.fadeIn({ node: contentNode }).play();
}
}).play();
},
// if any error occurs, it goes here:
error: function(error,args){
console.warn("error!",error);
}
});
};
dojo.addOnLoad(init);
FGSL: É permitida a reprodução deste material desde que citada a fonte
Dojo Toolkit: AJAX
<body id="content"><!-- this is a Typical WebPage starting point ... -->
FGSL: É permitida a reprodução deste material desde que citada a fonte
Dojo Toolkit: Gráficos
<script type="text/javascript">
dojo.require("dojox.charting.Chart2D");
makeCharts = function(){
var chart1 = new dojox.charting.Chart2D("simplechart");
chart1.addPlot("default", {type: "Lines"});
chart1.addAxis("x");
chart1.addAxis("y", {vertical: true});
chart1.addSeries("Series 1", [1, 2, 2, 3, 4, 5, 5, 7]);
chart1.render();
};
dojo.addOnLoad(makeCharts);
...
<div id="simplechart" style="width: 250px; height: 150px;"></div>
FGSL: É permitida a reprodução deste material desde que citada a fonte
Dojo Toolkit: Gráficos
FGSL: É permitida a reprodução deste material desde que citada a fonte
Dojo Toolkit: Gráficos
<script type="text/javascript">
dojo.require("dojox.charting.Chart2D");
makeCharts = function(){
var chart1 = new dojox.charting.Chart2D("simplechart");
chart1.addPlot("default", {type: "Lines"});
chart1.addPlot("other", {type: "Areas", hAxis: "other x", vAxis:
"other y"});
chart1.addAxis("x");
chart1.addAxis("y", {vertical: true});
chart1.addAxis("other x", {leftBottom: false});
chart1.addAxis("other y", {vertical: true, leftBottom: false});
chart1.addSeries("Series 1", [1, 2, 2, 3, 4, 5, 5, 7]);
chart1.addSeries("Series 2", [1, 1, 4, 2, 1, 6, 4, 3],
{plot: "other", stroke: {color:"blue"}, fill: "lightblue"}
);
chart1.render();
};
dojo.addOnLoad(makeCharts);
FGSL: É permitida a reprodução deste material desde que citada a fonte
Dojo Toolkit: Gráficos
FGSL: É permitida a reprodução deste material desde que citada a fonte
Zend Framework
FGSL: É permitida a reprodução deste material desde que citada a fonte
Zend Framework
http://pt.wikipedia.org/wiki/Changeman
FGSL: É permitida a reprodução deste material desde que citada a fonte
E o Dojo?
FGSL: É permitida a reprodução deste material desde que citada a fonte
Zend Framework + Dojo Toolkit
http://pt.wikipedia.org/wiki/Robin_(DC_Comics)
FGSL: É permitida a reprodução deste material desde que citada a fonte
Zend Framework + Dojo Toolkit
http://pt.wikipedia.org/wiki/Mulher_gato
FGSL: É permitida a reprodução deste material desde que citada a fonte
Zend_Form
<html>
<body>
<form id="myform"
action="myapp/mycontroller/myaction"
method="post">
Name: <input type="text" id="name"/>
<input type="submit" value="Search"/>
</form>
</body>
</html>
FGSL: É permitida a reprodução deste material desde que citada a fonte
Zend_Form
$form = new Zend_Form("myform");
$form-
>setAction("myapp/mycontroller/myaction
");
$form->setMethod("post");
FGSL: É permitida a reprodução deste material desde que citada a fonte
Zend_Form
$text = new Zend_Form_Element("name");
$form->setLabel("Name");
$form->addElement($text);
FGSL: É permitida a reprodução deste material desde que citada a fonte
Zend_Form
$submit = new Zend_Form_Element("Search");
$form->addElement($submit);
FGSL: É permitida a reprodução deste material desde que citada a fonte
Zend_Form
No controlador:
$this->view-assign('form',$form);
FGSL: É permitida a reprodução deste material desde que citada a fonte
Zend_Form
Na visão:
<?=$this->form?>
ou
<?php echo $this->form;?>
FGSL: É permitida a reprodução deste material desde que citada a fonte
E...?
http://pt.wikipedia.org/wiki/Wolverine
FGSL: É permitida a reprodução deste material desde que citada a fonte
Formulários RIA (Web 2.0)
FGSL: É permitida a reprodução deste material desde que citada a fonte
2 problemas 2 soluções
Formulários Dinâmicos => Zend_Form
RIA/Web 2.0 => Dojo Toolkit
FGSL: É permitida a reprodução deste material desde que citada a fonte
Zend_Layout
MVC
View → Conteúdo
Layout → Disposição
FGSL: É permitida a reprodução deste material desde que citada a fonte
Zend_Layout
Zend_Layout::startMvc(array(
'layoutPath' => APPLICATION_PATH .'/layouts'
));
FGSL: É permitida a reprodução deste material desde que citada a fonte
Zend_Controller_Action
public function init()
{
/* Initialize action controller here */
$this->view-
>addHelperPath('Zend/Dojo/View/Helper/',
'Zend_Dojo_View_Helper');
Zend_Dojo::enableView($this->view);
}
FGSL: É permitida a reprodução deste material desde que citada a fonte
Zend_Controller_Action
public function indexAction()
{
$form = new Zend_Dojo_Form();
$form->addElement(
'TextBox',
'foo',
array(
'value' => 'some text',
'label' => 'TextBox',
'trim' => true,
'propercase' => true,
)
);
FGSL: É permitida a reprodução deste material desde que citada a fonte
Zend_Controller_Action
$form->addElement(
'SubmitButton',
'foo',
array(
'required' => false,
'ignore' => true,
'label' => 'Submit Button!',
)
);
$this->view->assign('form',$form);
}
FGSL: É permitida a reprodução deste material desde que citada a fonte
Zend_View
<?php echo $this->form;
FGSL: É permitida a reprodução deste material desde que citada a fonte
Zend_Layout
<script type="text/javascript">
<?php
$this->dojo()->enable();
if ($this->dojo()->isEnabled())
{
$this->dojo();
}
?>
</script>
FGSL: É permitida a reprodução deste material desde que citada a fonte
Zend_Layout
<body class="tundra">
<?php echo $this->layout()->content ?>
</body>
FGSL: É permitida a reprodução deste material desde que citada a fonte
Até chegar aqui...
FGSL: É permitida a reprodução deste material desde que citada a fonte
Fontes de consulta
● Documentação on-line (en, fr, de, jp, cn...)
● Comunidade
● Fóruns, listas de discussão, IRC (#zftalk)
www.zfbrasil.com
● Livros disponíveis em português (agora, né)
FGSL: É permitida a reprodução deste material desde que citada a fonte
Referências
Coming soon...
FGSL: É permitida a reprodução deste material desde que citada a fonte
Foi
uma
grande
honra!
http://pt.wikipedia.org/wiki/Lanterna_Verde
2011 coming soon..
Obrigado

Contenu connexe

Similaire à Zend Framework e Dojo Toolkit

Palestra Dojo Toolkit Consegi 2011
Palestra Dojo Toolkit Consegi 2011Palestra Dojo Toolkit Consegi 2011
Palestra Dojo Toolkit Consegi 2011Flávio Lisboa
 
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5Willian Molinari
 
Odin: Um framework que chuta bundas
Odin: Um framework que chuta bundasOdin: Um framework que chuta bundas
Odin: Um framework que chuta bundasRafael Funchal
 
Intro ao eclipse
Intro ao eclipseIntro ao eclipse
Intro ao eclipseLucas Cruz
 
Desenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo ToolkitDesenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo ToolkitFlávio Lisboa
 
JavaFX 2 - TDC 2012
JavaFX 2 - TDC 2012JavaFX 2 - TDC 2012
JavaFX 2 - TDC 2012jesuinoPower
 
Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Christiano Anderson
 
Evento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de FrontEvento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de FrontMichel Ribeiro
 
Groovy na plataforma Java
Groovy na plataforma JavaGroovy na plataforma Java
Groovy na plataforma JavaJoão Lourenço
 
Indo além na jvm com grails - UFOP
Indo além na jvm com grails - UFOPIndo além na jvm com grails - UFOP
Indo além na jvm com grails - UFOPFelipe Zampa
 
Construindo sua primeira ontologia
Construindo sua primeira ontologiaConstruindo sua primeira ontologia
Construindo sua primeira ontologiaRômulo Jales
 
ZEO/RelStorage/PostgreSQL
ZEO/RelStorage/PostgreSQLZEO/RelStorage/PostgreSQL
ZEO/RelStorage/PostgreSQLgsroma
 
HTML5 - Seu navegador não é mais o mesmo
HTML5 - Seu navegador não é mais o mesmoHTML5 - Seu navegador não é mais o mesmo
HTML5 - Seu navegador não é mais o mesmoCaio Gondim
 
Alex Martelli's Python Design Patterns
Alex Martelli's Python Design PatternsAlex Martelli's Python Design Patterns
Alex Martelli's Python Design PatternsLuciano Ramalho
 

Similaire à Zend Framework e Dojo Toolkit (20)

Palestra Dojo Toolkit Consegi 2011
Palestra Dojo Toolkit Consegi 2011Palestra Dojo Toolkit Consegi 2011
Palestra Dojo Toolkit Consegi 2011
 
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
 
Minicurso groovy grails
Minicurso groovy grailsMinicurso groovy grails
Minicurso groovy grails
 
Odin: Um framework que chuta bundas
Odin: Um framework que chuta bundasOdin: Um framework que chuta bundas
Odin: Um framework que chuta bundas
 
Aula02 eclipse quem_es_tu
Aula02 eclipse quem_es_tuAula02 eclipse quem_es_tu
Aula02 eclipse quem_es_tu
 
Intro ao eclipse
Intro ao eclipseIntro ao eclipse
Intro ao eclipse
 
Desenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo ToolkitDesenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo Toolkit
 
JavaFX 2 - TDC 2012
JavaFX 2 - TDC 2012JavaFX 2 - TDC 2012
JavaFX 2 - TDC 2012
 
JavaFX 2
JavaFX 2JavaFX 2
JavaFX 2
 
Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7
 
Evento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de FrontEvento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de Front
 
Groovy na plataforma Java
Groovy na plataforma JavaGroovy na plataforma Java
Groovy na plataforma Java
 
Indo além na jvm com grails - UFOP
Indo além na jvm com grails - UFOPIndo além na jvm com grails - UFOP
Indo além na jvm com grails - UFOP
 
Construindo sua primeira ontologia
Construindo sua primeira ontologiaConstruindo sua primeira ontologia
Construindo sua primeira ontologia
 
Html5 workshop
Html5 workshopHtml5 workshop
Html5 workshop
 
ZEO/RelStorage/PostgreSQL
ZEO/RelStorage/PostgreSQLZEO/RelStorage/PostgreSQL
ZEO/RelStorage/PostgreSQL
 
HTML5 - Seu navegador não é mais o mesmo
HTML5 - Seu navegador não é mais o mesmoHTML5 - Seu navegador não é mais o mesmo
HTML5 - Seu navegador não é mais o mesmo
 
Alex Martelli's Python Design Patterns
Alex Martelli's Python Design PatternsAlex Martelli's Python Design Patterns
Alex Martelli's Python Design Patterns
 
jQuery
jQueryjQuery
jQuery
 
jQuery
jQueryjQuery
jQuery
 

Plus de Flávio Lisboa

Criando testes integrados de APIs com PHP
Criando testes integrados de APIs com PHPCriando testes integrados de APIs com PHP
Criando testes integrados de APIs com PHPFlávio Lisboa
 
Cooperativas de Software Livre: Uma comparação entre Brasil e Argentina
Cooperativas de Software Livre: Uma comparação entre Brasil e ArgentinaCooperativas de Software Livre: Uma comparação entre Brasil e Argentina
Cooperativas de Software Livre: Uma comparação entre Brasil e ArgentinaFlávio Lisboa
 
Aprenda a afiar suas garras com Laminas
Aprenda a afiar suas garras com LaminasAprenda a afiar suas garras com Laminas
Aprenda a afiar suas garras com LaminasFlávio Lisboa
 
Ciência e software livre: desenvolvendo com método
Ciência e software livre: desenvolvendo com métodoCiência e software livre: desenvolvendo com método
Ciência e software livre: desenvolvendo com métodoFlávio Lisboa
 
Turbinando microsserviços em PHP
Turbinando microsserviços em PHPTurbinando microsserviços em PHP
Turbinando microsserviços em PHPFlávio Lisboa
 
O que esperar do framework Laminas
O que esperar do framework LaminasO que esperar do framework Laminas
O que esperar do framework LaminasFlávio Lisboa
 
PHP Conference Brazil - What can we expect about framework Laminas?
PHP Conference Brazil - What can we expect about framework Laminas?PHP Conference Brazil - What can we expect about framework Laminas?
PHP Conference Brazil - What can we expect about framework Laminas?Flávio Lisboa
 
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019Algoritmos Genéticos em PHP - PHP Conference Brasil 2019
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019Flávio Lisboa
 
Criando microsserviços em PHP
Criando microsserviços em PHPCriando microsserviços em PHP
Criando microsserviços em PHPFlávio Lisboa
 
Como se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundoComo se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundoFlávio Lisboa
 
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHPA demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHPFlávio Lisboa
 
Comunicação e padrões em código aberto: quando convergente e divergente cooperam
Comunicação e padrões em código aberto: quando convergente e divergente cooperamComunicação e padrões em código aberto: quando convergente e divergente cooperam
Comunicação e padrões em código aberto: quando convergente e divergente cooperamFlávio Lisboa
 
Criação de robôs em PHP para raspagem de dados
Criação de robôs em PHP para raspagem de dadosCriação de robôs em PHP para raspagem de dados
Criação de robôs em PHP para raspagem de dadosFlávio Lisboa
 
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de Dados
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de DadosEstudo de Caso: Utilização de PHP no Serviço Federal de Processamento de Dados
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de DadosFlávio Lisboa
 
Arquitetura PHP para um mundo orientado a microsserviços
Arquitetura PHP para um mundo orientado a microsserviçosArquitetura PHP para um mundo orientado a microsserviços
Arquitetura PHP para um mundo orientado a microsserviçosFlávio Lisboa
 
Semeando Liberdade: Como (e onde) o software livre inclui as pessoas
Semeando Liberdade: Como (e onde) o software livre inclui as pessoasSemeando Liberdade: Como (e onde) o software livre inclui as pessoas
Semeando Liberdade: Como (e onde) o software livre inclui as pessoasFlávio Lisboa
 
O que é programação de computadores
O que é programação de computadoresO que é programação de computadores
O que é programação de computadoresFlávio Lisboa
 
Economia em rede (comunidade)
Economia em rede (comunidade)Economia em rede (comunidade)
Economia em rede (comunidade)Flávio Lisboa
 
Aplicações Corporativas em PHP (CRM e ERP)
Aplicações Corporativas em PHP (CRM e ERP)Aplicações Corporativas em PHP (CRM e ERP)
Aplicações Corporativas em PHP (CRM e ERP)Flávio Lisboa
 

Plus de Flávio Lisboa (20)

Criando testes integrados de APIs com PHP
Criando testes integrados de APIs com PHPCriando testes integrados de APIs com PHP
Criando testes integrados de APIs com PHP
 
Cooperativas de Software Livre: Uma comparação entre Brasil e Argentina
Cooperativas de Software Livre: Uma comparação entre Brasil e ArgentinaCooperativas de Software Livre: Uma comparação entre Brasil e Argentina
Cooperativas de Software Livre: Uma comparação entre Brasil e Argentina
 
Aprenda a afiar suas garras com Laminas
Aprenda a afiar suas garras com LaminasAprenda a afiar suas garras com Laminas
Aprenda a afiar suas garras com Laminas
 
Ciência e software livre: desenvolvendo com método
Ciência e software livre: desenvolvendo com métodoCiência e software livre: desenvolvendo com método
Ciência e software livre: desenvolvendo com método
 
Turbinando microsserviços em PHP
Turbinando microsserviços em PHPTurbinando microsserviços em PHP
Turbinando microsserviços em PHP
 
O que esperar do framework Laminas
O que esperar do framework LaminasO que esperar do framework Laminas
O que esperar do framework Laminas
 
PHP Conference Brazil - What can we expect about framework Laminas?
PHP Conference Brazil - What can we expect about framework Laminas?PHP Conference Brazil - What can we expect about framework Laminas?
PHP Conference Brazil - What can we expect about framework Laminas?
 
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019Algoritmos Genéticos em PHP - PHP Conference Brasil 2019
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019
 
Criando microsserviços em PHP
Criando microsserviços em PHPCriando microsserviços em PHP
Criando microsserviços em PHP
 
Como se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundoComo se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundo
 
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHPA demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
 
Comunicação e padrões em código aberto: quando convergente e divergente cooperam
Comunicação e padrões em código aberto: quando convergente e divergente cooperamComunicação e padrões em código aberto: quando convergente e divergente cooperam
Comunicação e padrões em código aberto: quando convergente e divergente cooperam
 
Criação de robôs em PHP para raspagem de dados
Criação de robôs em PHP para raspagem de dadosCriação de robôs em PHP para raspagem de dados
Criação de robôs em PHP para raspagem de dados
 
Amanhecer esmeralda
Amanhecer esmeraldaAmanhecer esmeralda
Amanhecer esmeralda
 
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de Dados
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de DadosEstudo de Caso: Utilização de PHP no Serviço Federal de Processamento de Dados
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de Dados
 
Arquitetura PHP para um mundo orientado a microsserviços
Arquitetura PHP para um mundo orientado a microsserviçosArquitetura PHP para um mundo orientado a microsserviços
Arquitetura PHP para um mundo orientado a microsserviços
 
Semeando Liberdade: Como (e onde) o software livre inclui as pessoas
Semeando Liberdade: Como (e onde) o software livre inclui as pessoasSemeando Liberdade: Como (e onde) o software livre inclui as pessoas
Semeando Liberdade: Como (e onde) o software livre inclui as pessoas
 
O que é programação de computadores
O que é programação de computadoresO que é programação de computadores
O que é programação de computadores
 
Economia em rede (comunidade)
Economia em rede (comunidade)Economia em rede (comunidade)
Economia em rede (comunidade)
 
Aplicações Corporativas em PHP (CRM e ERP)
Aplicações Corporativas em PHP (CRM e ERP)Aplicações Corporativas em PHP (CRM e ERP)
Aplicações Corporativas em PHP (CRM e ERP)
 

Zend Framework e Dojo Toolkit

  • 1. FGSL: É permitida a reprodução deste material desde que citada a fonte Zend Framework e Dojo Toolkit Flávio Gomes da Silva Lisboa flaviogomesdasilva@yahoo.com.br www.fgsl.eti.br
  • 2. FGSL: É permitida a reprodução deste material desde que citada a fonte Agenda ● Quem sou eu (1 slide) ● Javascript, AJAX, RIA ● Dojo Toolkit ● Zend Framework ● Zend_Dojo
  • 3. FGSL: É permitida a reprodução deste material desde que citada a fonte Quem sou eu
  • 4. FGSL: É permitida a reprodução deste material desde que citada a fonte Ah, se a Web fosse Desktop... AJAX (Asynchronous Javascript And XML) RIA Web 2.0
  • 5. FGSL: É permitida a reprodução deste material desde que citada a fonte Dojo Toolkit http://www.dojotoolkit.org/
  • 6. FGSL: É permitida a reprodução deste material desde que citada a fonte Dojo Toolkit Dojo Toolkit é uma caixa de ferramentas Javascript open-source útil para construir ótimas aplicações web.
  • 7. FGSL: É permitida a reprodução deste material desde que citada a fonte Dojo Toolkit O objetivo é encurtar o tempo gasto entre a idéia e a implementação ao prover uma API excepcionalmente bem concebida e um conjunto de ferramentas para auxiliar e corrigir os problemas experimentados no dia-a-dia do desenvolvimento web.
  • 8. FGSL: É permitida a reprodução deste material desde que citada a fonte Dojo Toolkit Ele é leve, extremamente robusto, e fornece um sólido conjunto de ferramentas para manipulação DOM, animações, Ajax, eventos, internacionalização (i18n) e accessibilidade (a11y).
  • 9. FGSL: É permitida a reprodução deste material desde que citada a fonte Dojo Toolkit Dojo é completamente livre e desenvolvido de forma transparente por um grupo ativo de desenvolvedores com uma comunidade fortemente presente.
  • 10. FGSL: É permitida a reprodução deste material desde que citada a fonte Dojo Toolkit Alô Mundo: Baixe o Dojo Toolkit (dojo-release-1.x.y) Copie as pastas dojo, dojox e dijit para seu diretório de Javascripts (por exemplo, js na raiz do diretório Web)
  • 11. FGSL: É permitida a reprodução deste material desde que citada a fonte Dojo Toolkit <html> <head> <title>Installed!</title> <script src="js/dojo/dojo.js"></script> </head> <body> <h1>Hello, Dojo</h1> </body> </html>
  • 12. FGSL: É permitida a reprodução deste material desde que citada a fonte Dojo Toolkit MAS, CARAMBA, NÃO ACONTECEU NADA! http://pt.wikipedia.org/wiki/Homem_de_ferro
  • 13. FGSL: É permitida a reprodução deste material desde que citada a fonte Dojo Toolkit ENTÃO ESTÁ TUDO CERTO, PORQUE NÃO FIZEMOS NADA AINDA! http://pt.wikipedia.org/wiki/Adam_strange
  • 14. FGSL: É permitida a reprodução deste material desde que citada a fonte Dojo Toolkit: debug de página <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>Dojo Toolkit Test Page</title> <!-- load the dojo toolkit base --> <script type="text/javascript" src="js/dojo/dojo.js" djConfig="parseOnLoad:true, isDebug:true"></script>
  • 15. FGSL: É permitida a reprodução deste material desde que citada a fonte Dojo Toolkit: debug de página <script type="text/javascript"> /* our JavaScript will go here */ </script> <style type="text/css"> /* our CSS can go here */ </style> </head> <body><!-- this is a Typical WebPage starting point ... --> <h1 id="testHeading">Dojo Skeleton Page</h1> <div id="contentNode"> <p>Some Content To Replace</p> </div> </body> </html>
  • 16. FGSL: É permitida a reprodução deste material desde que citada a fonte Dojo Toolkit: página carregada // a very common method of loading code onLoad var init = function(){ console.log("I run after the page is ready."); }; dojo.addOnLoad(init); // and/or pass an anonymous function dojo.addOnLoad(function(){ console.log("I also run, but second. "); }); NÃO PRECISA DE <body onLoad="someFunc">
  • 17. FGSL: É permitida a reprodução deste material desde que citada a fonte Dojo Toolkit: alterando o conteúdo de tags HTML pelo id dojo.require("dijit.form.Button"); dojo.require("dijit.TitlePane"); dojo.addOnLoad(function(){ dojo.byId("testHeading").innerHTML = "We're on our way!"; console.log("onLoad fires after require() is done"); });
  • 18. FGSL: É permitida a reprodução deste material desde que citada a fonte Dojo Toolkit: alterando o CSS <script type="text/javascript"> dojo.require("dojo.NodeList-fx"); dojo.addOnLoad(function(){ // get each element with class="para" dojo.query(".para") .addClass("testClass") .fadeOut({ delay: 1000 }).play(); }); </script>
  • 19. FGSL: É permitida a reprodução deste material desde que citada a fonte Dojo Toolkit: eventos <script type="text/javascript"> dojo.addOnLoad(function(){ var node = dojo.byId("testHeading"); dojo.connect(node,"onclick",function(){ node.innerHTML = "I've been clicked"; }); }); ... <body><!-- this is a Typical WebPage starting point ... --> <a id="testHeading" href="#">Click here</a> </body>
  • 20. FGSL: É permitida a reprodução deste material desde que citada a fonte Dojo Toolkit: animações <script type="text/javascript"> dojo.addOnLoad(function(){ dojo.style("testHeading","opacity","0"); // hide it var anim1 = dojo.fadeOut({ node: "testHeading", duration:700 }); var anim2 = dojo.animateProperty({ node: "testHeading", delay: 1000, properties:{ // fade back in and make text bigger opacity: { end: 1 }, fontSize: { end:19, unit:"pt"} } }); anim1.play(); anim2.play(); });
  • 21. FGSL: É permitida a reprodução deste material desde que citada a fonte Dojo Toolkit: animações FX <script type="text/javascript"> dojo.require("dojo.fx"); dojo.addOnLoad(function(){ var anim = dojo.fadeOut({ node: "testHeading", delay: 1000 }); var anim2 = dojo.fx.slideTo({ node: "testHeading", top:75, left:75 }); var result = dojo.fx.combine([anim,anim2]); result.play(); });
  • 22. FGSL: É permitida a reprodução deste material desde que citada a fonte Dojo Toolkit: AJAX <script type="text/javascript"> var init = function(){ var contentNode = dojo.byId("content"); dojo.xhrGet({ url: "js/sample.txt", handleAs: "text", load: function(data,args){ // fade out the node we're modifying dojo.fadeOut({ node: contentNode, onEnd: function(){ // set the data, fade it back in contentNode.innerHTML = data; dojo.fadeIn({ node: contentNode }).play(); } }).play(); }, // if any error occurs, it goes here: error: function(error,args){ console.warn("error!",error); } }); }; dojo.addOnLoad(init);
  • 23. FGSL: É permitida a reprodução deste material desde que citada a fonte Dojo Toolkit: AJAX <body id="content"><!-- this is a Typical WebPage starting point ... -->
  • 24. FGSL: É permitida a reprodução deste material desde que citada a fonte Dojo Toolkit: Gráficos <script type="text/javascript"> dojo.require("dojox.charting.Chart2D"); makeCharts = function(){ var chart1 = new dojox.charting.Chart2D("simplechart"); chart1.addPlot("default", {type: "Lines"}); chart1.addAxis("x"); chart1.addAxis("y", {vertical: true}); chart1.addSeries("Series 1", [1, 2, 2, 3, 4, 5, 5, 7]); chart1.render(); }; dojo.addOnLoad(makeCharts); ... <div id="simplechart" style="width: 250px; height: 150px;"></div>
  • 25. FGSL: É permitida a reprodução deste material desde que citada a fonte Dojo Toolkit: Gráficos
  • 26. FGSL: É permitida a reprodução deste material desde que citada a fonte Dojo Toolkit: Gráficos <script type="text/javascript"> dojo.require("dojox.charting.Chart2D"); makeCharts = function(){ var chart1 = new dojox.charting.Chart2D("simplechart"); chart1.addPlot("default", {type: "Lines"}); chart1.addPlot("other", {type: "Areas", hAxis: "other x", vAxis: "other y"}); chart1.addAxis("x"); chart1.addAxis("y", {vertical: true}); chart1.addAxis("other x", {leftBottom: false}); chart1.addAxis("other y", {vertical: true, leftBottom: false}); chart1.addSeries("Series 1", [1, 2, 2, 3, 4, 5, 5, 7]); chart1.addSeries("Series 2", [1, 1, 4, 2, 1, 6, 4, 3], {plot: "other", stroke: {color:"blue"}, fill: "lightblue"} ); chart1.render(); }; dojo.addOnLoad(makeCharts);
  • 27. FGSL: É permitida a reprodução deste material desde que citada a fonte Dojo Toolkit: Gráficos
  • 28. FGSL: É permitida a reprodução deste material desde que citada a fonte Zend Framework
  • 29. FGSL: É permitida a reprodução deste material desde que citada a fonte Zend Framework http://pt.wikipedia.org/wiki/Changeman
  • 30. FGSL: É permitida a reprodução deste material desde que citada a fonte E o Dojo?
  • 31. FGSL: É permitida a reprodução deste material desde que citada a fonte Zend Framework + Dojo Toolkit http://pt.wikipedia.org/wiki/Robin_(DC_Comics)
  • 32. FGSL: É permitida a reprodução deste material desde que citada a fonte Zend Framework + Dojo Toolkit http://pt.wikipedia.org/wiki/Mulher_gato
  • 33. FGSL: É permitida a reprodução deste material desde que citada a fonte Zend_Form <html> <body> <form id="myform" action="myapp/mycontroller/myaction" method="post"> Name: <input type="text" id="name"/> <input type="submit" value="Search"/> </form> </body> </html>
  • 34. FGSL: É permitida a reprodução deste material desde que citada a fonte Zend_Form $form = new Zend_Form("myform"); $form- >setAction("myapp/mycontroller/myaction "); $form->setMethod("post");
  • 35. FGSL: É permitida a reprodução deste material desde que citada a fonte Zend_Form $text = new Zend_Form_Element("name"); $form->setLabel("Name"); $form->addElement($text);
  • 36. FGSL: É permitida a reprodução deste material desde que citada a fonte Zend_Form $submit = new Zend_Form_Element("Search"); $form->addElement($submit);
  • 37. FGSL: É permitida a reprodução deste material desde que citada a fonte Zend_Form No controlador: $this->view-assign('form',$form);
  • 38. FGSL: É permitida a reprodução deste material desde que citada a fonte Zend_Form Na visão: <?=$this->form?> ou <?php echo $this->form;?>
  • 39. FGSL: É permitida a reprodução deste material desde que citada a fonte E...? http://pt.wikipedia.org/wiki/Wolverine
  • 40. FGSL: É permitida a reprodução deste material desde que citada a fonte Formulários RIA (Web 2.0)
  • 41. FGSL: É permitida a reprodução deste material desde que citada a fonte 2 problemas 2 soluções Formulários Dinâmicos => Zend_Form RIA/Web 2.0 => Dojo Toolkit
  • 42. FGSL: É permitida a reprodução deste material desde que citada a fonte Zend_Layout MVC View → Conteúdo Layout → Disposição
  • 43. FGSL: É permitida a reprodução deste material desde que citada a fonte Zend_Layout Zend_Layout::startMvc(array( 'layoutPath' => APPLICATION_PATH .'/layouts' ));
  • 44. FGSL: É permitida a reprodução deste material desde que citada a fonte Zend_Controller_Action public function init() { /* Initialize action controller here */ $this->view- >addHelperPath('Zend/Dojo/View/Helper/', 'Zend_Dojo_View_Helper'); Zend_Dojo::enableView($this->view); }
  • 45. FGSL: É permitida a reprodução deste material desde que citada a fonte Zend_Controller_Action public function indexAction() { $form = new Zend_Dojo_Form(); $form->addElement( 'TextBox', 'foo', array( 'value' => 'some text', 'label' => 'TextBox', 'trim' => true, 'propercase' => true, ) );
  • 46. FGSL: É permitida a reprodução deste material desde que citada a fonte Zend_Controller_Action $form->addElement( 'SubmitButton', 'foo', array( 'required' => false, 'ignore' => true, 'label' => 'Submit Button!', ) ); $this->view->assign('form',$form); }
  • 47. FGSL: É permitida a reprodução deste material desde que citada a fonte Zend_View <?php echo $this->form;
  • 48. FGSL: É permitida a reprodução deste material desde que citada a fonte Zend_Layout <script type="text/javascript"> <?php $this->dojo()->enable(); if ($this->dojo()->isEnabled()) { $this->dojo(); } ?> </script>
  • 49. FGSL: É permitida a reprodução deste material desde que citada a fonte Zend_Layout <body class="tundra"> <?php echo $this->layout()->content ?> </body>
  • 50. FGSL: É permitida a reprodução deste material desde que citada a fonte Até chegar aqui...
  • 51. FGSL: É permitida a reprodução deste material desde que citada a fonte Fontes de consulta ● Documentação on-line (en, fr, de, jp, cn...) ● Comunidade ● Fóruns, listas de discussão, IRC (#zftalk) www.zfbrasil.com ● Livros disponíveis em português (agora, né)
  • 52. FGSL: É permitida a reprodução deste material desde que citada a fonte Referências Coming soon...
  • 53. FGSL: É permitida a reprodução deste material desde que citada a fonte Foi uma grande honra! http://pt.wikipedia.org/wiki/Lanterna_Verde 2011 coming soon.. Obrigado