Programação Web com Zend Framework e Ajax com Dojo

6.041 visualizações

Publicada em

Mini-Curso ministrado por Fabio Ginzel abortando os conceitos basicos de programação para web indo até zend framework e dojo

Publicada em: Tecnologia
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
6.041
No SlideShare
0
A partir de incorporações
0
Número de incorporações
37
Ações
Compartilhamentos
0
Downloads
103
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Programação Web com Zend Framework e Ajax com Dojo

  1. 1. Fabio Ginzel [email_address]
  2. 2. PROGRAMAÇÃO WEB
  3. 3. OBJETIVO: <ul><li>Compreender conceitos básicos do funcionamento da internet; </li></ul><ul><li>Entender as mudanças da antiga web para a nova web (web 2.0) </li></ul><ul><li>Entender o fluxo de uma aplicação web </li></ul><ul><li>Saber o “nosso” modo de programar para web </li></ul>
  4. 4. RESUMO <ul><li>Conceitos de Web </li></ul><ul><li>Ferramentas de Programação </li></ul><ul><li>O Desenvolvimento </li></ul>
  5. 5. Conceitos de Web <ul><li>Conceitos de Web </li></ul><ul><li>1.1 JavaScript </li></ul><ul><li>1.2 Requisição </li></ul><ul><li>1.3 Web “1.0” </li></ul><ul><li>1.4 Web “2.0” </li></ul><ul><li>1.5 Ajax </li></ul><ul><li>1.6 CSS </li></ul>
  6. 6. JavaScript <ul><li>Linguagem interpretada </li></ul><ul><li>Roda do lado do cliente (quem interpreta é o browser) </li></ul><ul><li>Consegue alterar elementos html dinamicamente, por isso é usada para validações dinamicas. </li></ul><ul><li>Pode estar dentro do html ou em um arquivo separado </li></ul><ul><li>Pode ter funções ou não </li></ul>
  7. 7. JavaScript dentro de um arquivo HTML <ul><li>Com Função: </li></ul><ul><li><script type=&quot;text/javascript&quot;> </li></ul><ul><li>function msgErro(erro){ </li></ul><ul><li>alert(“O erro foi: “ + erro); </li></ul><ul><li>} </li></ul><ul><li></script> </li></ul><ul><li>Sem Função: </li></ul><ul><li><script type=&quot;text/javascript&quot;> </li></ul><ul><li>alert(“Seu Browser passou por aqui”); </li></ul><ul><li></script> </li></ul>
  8. 8. JavaScript Externo <ul><li>No html: </li></ul><ul><li><script type=&quot;text/javascript“ src=“/apresentacao/arquivo.js&quot;></script> </li></ul><ul><li>No Arquivo (arquivo.js): </li></ul><ul><li>grupo = { </li></ul><ul><li>msgErro : function(erro){ </li></ul><ul><li>alert(“Msg de erro dentro de arquivo: “ + erro) ; </li></ul><ul><li>}, </li></ul><ul><li>escreveNaDiv : function(msg){ </li></ul><ul><li>document.getElementByID(“nomeDaDiv”).innerHTML = msg ; </li></ul><ul><li>} </li></ul><ul><li>}; </li></ul><ul><li>alert(“passou pelo arquivo”) ; </li></ul>
  9. 9. Requisição <ul><li>Uma mensagem enviada pelo cliente (browser) para o servidor web solicitando dados </li></ul><ul><li>Existem diversos “metodos” de requisição, que diz o que o servidor deve fazer com aquela requisição </li></ul><ul><li>Usamos basicamente 2: Get e Post </li></ul>
  10. 10. Método Get <ul><li>Solicita a resposta do servidor dado um determinado endereço (nada mais) </li></ul><ul><li>Nesse endereço podem conter parametros da requisição. </li></ul><ul><li>Uma aplicação pode receber esses parametros e decidir quais dados retornar </li></ul><ul><li>Ex: http://www.pandora.com.br </li></ul><ul><li>Com parâmetros: </li></ul><ul><li>http://www.orkut.com.br/ Main#Community?cmm=161395 </li></ul>
  11. 11. Método Post <ul><li>Solicita a resposta do servidor dado um determinado endereço e uma série ilimitada de parametros que vão no corpo da mensagem </li></ul><ul><li>O Endereço se mantem inalterado e os parametros vão de forma que o usuário não perceba </li></ul><ul><li>Exemplo: preenchimento de um formulário, após clicar no OK. </li></ul>
  12. 12. Post e Get Comparativo <ul><li>O get tem uma limitação de quantidade de parametros, já que o endereço do site tem um limite </li></ul><ul><li>Não da para gravar no favoritos ou no historico um pagina gerada atraves de um dado que vai no post </li></ul>
  13. 13. Post e Get: Quando Usar? <ul><li>Usar o Get em paginação ou em paginas que o usuario pode querer acessar diretamente sem passar por intermediarios </li></ul><ul><li>Usar o post em todos os outros casos, resumindo... Em Formulários. </li></ul>
  14. 14. Web “1.0” <ul><li>Paginas estaticas, sem interação com usuário, onde o servidor web retorna sempre uma pagina completa </li></ul><ul><li>O Browser (cliente) só tem o trabalho de exibir a pagina que o servidor retornou. </li></ul><ul><li>O Usuário é apenas um leitor da informação. </li></ul><ul><li>Ex: </li></ul><ul><li>http://www.sindicato.com.br/ </li></ul>
  15. 15. Web “2.0” <ul><li>Paginas dinamicas, alteradas com a participação do usuário. </li></ul><ul><li>O Usuário deixa de ser um leitor, ele passa ser um escritor daquela pagina, solicitando e cadastrando informações. </li></ul><ul><li>O Browser (cliente) passa a fazer parte da programação, interpretando javascripts que fazem a interação acontecer. </li></ul><ul><li>Ex: </li></ul><ul><li>http://www.orkut.com/ </li></ul>
  16. 16. Ajax <ul><li>Nova Linguagem? </li></ul><ul><li>Grande Inovação? </li></ul>
  17. 17. AJAX <ul><li>Asynchronous Javascript And XML </li></ul><ul><li>Nada mais do que o uso do javascript para fazer requisição ao servidor web, retornando apenas dados e não mais uma pagina inteira. </li></ul><ul><li>Manuseando esses dados retornados na tela de forma a criar uma pagina dinamica </li></ul><ul><li>Ex. Qualquer grid dos nossos sistemas atuais </li></ul>
  18. 18. AJAX - Principios <ul><li>O navegador hospeda uma aplicação, e não conteúdo </li></ul><ul><li>O servidor fornece dados, e não conteúdo </li></ul><ul><li>A interação do utilizador com a aplicação pode ser flexível e contínua </li></ul>
  19. 19. AJAX – Visão Geral
  20. 20. AJAX - Bibliotecas <ul><li>Existem diversas bibliotecas para ajudar no uso de ajax, as mais conhecidas são: </li></ul><ul><li>YUI - Yahoo! UI Library </li></ul><ul><li>jQuery </li></ul><ul><li>GWT – Google </li></ul><ul><li>Dojo </li></ul><ul><li>TODAS COM O MESMO PRINCIPIO DE REQUISIÇÃO DE DADOS NÃO DE PAGINA! </li></ul>
  21. 21. CSS <ul><li>Usado para dar forma a pagina, mudar a posição de objetos, mudar cores, tamanhos, fonte... Etc </li></ul><ul><li>Como o css só mexe na parte visual, podemos deixar a cargo de um webdesigner </li></ul><ul><li>Estas propriedades tambêm podem estar “embutidas” no objeto não podendo assim ser alteradas por um css. Ex: </li></ul><ul><li><button style =“width:100px” id=&quot;btnLogin&quot; type=&quot;button&quot;>Login</button> </li></ul><ul><li>Não é uma boa pratica! </li></ul>
  22. 22. CSS <ul><li>Assim como javascript o css pode estar contido no html ou em um arquivo separado. </li></ul><ul><li>Tambem é interpretado pelo browser </li></ul><ul><li>O Ideal é sempre fazer parte de um arquivo separado, para o webdesigner ter total liberdade, alem de possibilitar a alteração do visual da pagina alterando apenas um arquivo </li></ul>
  23. 23. CSS - Exemplo <ul><li>No HTML: </li></ul><ul><li><link href=&quot;/apresentacao/estilo.css&quot; media=&quot;screen&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; /> </li></ul><ul><li><button id=&quot;btnLogin“ class= “classLoggin” type=&quot;button&quot;>Login</button> </li></ul><ul><li>Estilo.css </li></ul><ul><li>#btnLogin { </li></ul><ul><ul><li>width: 200px; </li></ul></ul><ul><ul><li>position: relative; </li></ul></ul><ul><ul><li>left: 100px; </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><li>Ou </li></ul><ul><li>.classLoggin { </li></ul><ul><ul><li>width: 200px; </li></ul></ul><ul><ul><li>position: relative; </li></ul></ul><ul><ul><li>left: 100px; </li></ul></ul><ul><ul><li>} </li></ul></ul>
  24. 24. Ferramentas de Programação <ul><li>Ferramentas de Programação </li></ul><ul><li>2.1 Firebug </li></ul><ul><li>2.2 FirePHP </li></ul><ul><li>2.3 Zend Studio </li></ul>
  25. 25. Firebug <ul><li>É um plugin para o Firefox, que possibilita Editar, visualizar e DEBUGAR: </li></ul><ul><li>CSS </li></ul><ul><li>HTML </li></ul><ul><li>Javascript </li></ul><ul><li>Para instala-lo procure no google firebug, </li></ul><ul><li>Depois ativá-lo para aquele site clicando na baratinha </li></ul>
  26. 26. FirePHP <ul><li>É um plugin para o Firefox, que junto com o Firebug permite que você envie mensagens para ele atraves de comandos em PHP, facilitando o debug de sistemas. </li></ul><ul><li>Mais pra frente veremos ele funcionando </li></ul>
  27. 27. Zend Studio <ul><li>IDE baseada no eclipse, que permite trabalhar com php e traz diversas facilidades para se trabalhar com o framework desenvolvido pelo mesmo grupo (Zend Framework) </li></ul><ul><li>Permite Debuggar </li></ul><ul><li>Criar arquivos atraves de templates do próprio framework </li></ul>
  28. 28. O Desenvolvimento <ul><li>O Desenvolvimento </li></ul><ul><li>3.1 Orientação a Objetos </li></ul><ul><li>3.2 MVC </li></ul><ul><li>3.3 PHP </li></ul><ul><li>3.4 Zend Framework </li></ul><ul><li>3.5 Dojo </li></ul>
  29. 29. Orientação a Objetos <ul><li>“ Dividir para conquistar” </li></ul><ul><li>Dividir uma tarefa complicada em varias simples </li></ul><ul><li>Ex. Agencia de Carros </li></ul><ul><ul><li>Dividimos em: </li></ul></ul><ul><ul><li>vende </li></ul></ul><ul><ul><li>compra </li></ul></ul><ul><ul><ul><li>imprime boleto </li></ul></ul></ul><ul><ul><ul><li>recebe o cartão de credito </li></ul></ul></ul><ul><ul><ul><li>Etc..... </li></ul></ul></ul>
  30. 30. Orientação a Objetos Classe <ul><li>É a receita de um objeto </li></ul><ul><li>Podemos ter varios objetos de uma determinada classe </li></ul>
  31. 31. Orientação a Objetos Objeto <ul><li>É o bolo feito com a receita. </li></ul><ul><li>Trabalhamos com o objeto e não com a classe </li></ul><ul><li>Ex. </li></ul><ul><li>Classe homem </li></ul><ul><ul><li>Objeto Fabio </li></ul></ul><ul><ul><li>Objeto Leandro </li></ul></ul><ul><ul><li>..... </li></ul></ul><ul><li>A classe não faz ação e não tem atributos, mas o objeto sim.. </li></ul><ul><li>Ex: Homem não tem uma idade, não fala alguma coisa, </li></ul><ul><li>Mas o fabio tem 24 anos, e fala alguma coisa. </li></ul>
  32. 32. Orientação a Objetos Herança <ul><li>Uma classe pode herdar outra classe </li></ul><ul><li>Isto é, tudo que a classe pai faz ele faz tem, e faz algo mais. </li></ul><ul><li>Ex. Classe pai: Mamiferos </li></ul><ul><ul><li>Classe filha Baleia </li></ul></ul>
  33. 33. Orientação a Objetos Construtor <ul><li>Quando instanciamos um objeto, isto é criamos um objeto a partir de uma classe, ele chama determinado método da classe, este é o construtor: </li></ul><ul><li>$fabio = new Homem(“24 anos”); </li></ul><ul><li>Na classe: </li></ul><ul><li>Class homem { </li></ul><ul><ul><li>Private idade ; </li></ul></ul><ul><ul><li>Public function _construct(idade) </li></ul></ul><ul><ul><li>{ </li></ul></ul><ul><ul><li>$this->idade = idade; </li></ul></ul><ul><ul><li> } </li></ul></ul><ul><ul><li>} </li></ul></ul>
  34. 34. Orientação a Objetos Classe Abstrata <ul><li>Ela define um modelo ( template ) para uma funcionalidade e fornece uma implementação incompleta </li></ul><ul><li>Ex.: </li></ul><ul><li>Classe abstrata mamiferos </li></ul><ul><li>Classe concreta baleia </li></ul><ul><li>Objeto da classe baleia willy </li></ul>
  35. 35. Model View Controller (MVC) <ul><li>É um padrão de programação </li></ul><ul><li>Consisti em dividir a aplicação em 3 partes: </li></ul><ul><ul><li>Model (Modelo) </li></ul></ul><ul><ul><li>View (Visão) </li></ul></ul><ul><ul><li>Controller (Controle) </li></ul></ul>
  36. 36. Modelo (Model) <ul><li>É a camada responsável pelos dados, ela representa os dados em um banco de dados </li></ul><ul><li>Reponsável por gravar os dados e por buscar os dados no banco de dados </li></ul><ul><li>Exemplo: No arpan, teriamos uma classe da camada model chamada Pessifisi, outra chamada pessjuri etc... </li></ul>
  37. 37. View (Visão) <ul><li>É a camada responsável pela apresentação do sistema </li></ul><ul><li>Nela você programa como os dados serão apresentados para o usuário </li></ul><ul><li>Exemplo: O .dfm do delphi </li></ul>
  38. 38. Controller (Controle) <ul><li>É a camada responsável pelo processamento do sistema </li></ul><ul><li>Ela pega os dados do model processa e apresenta na camada view </li></ul>
  39. 39. Model View Controller (MVC)
  40. 40. MVC no Delphi <ul><li>No delphi é possível programar usando o padrão MVC. </li></ul><ul><li>O data modulo seria a camada model </li></ul><ul><li>O .dfm seria a camada view </li></ul><ul><li>E o .pas a camada controlller </li></ul>
  41. 41. PHP <ul><li>Linguagem interpretada, que é executada no servidor </li></ul><ul><li>Em constante mudança </li></ul><ul><li>Incorpora Orientação a Objetos a partir da versão 5 (recente) </li></ul>
  42. 42. PHP - Variaveis <ul><li>Não é necessário declarar o tipo. </li></ul><ul><li>Podendo mudar o tipo de uma variavel em tempo de execução </li></ul><ul><li>Ex: </li></ul><ul><li>$apr = 10; </li></ul><ul><li>$apr = “apresentacao”; </li></ul>
  43. 43. PHP – Métodos Mágicos <ul><li>No php existe a possibilidade de chamar metodos que não existem em um objeto. </li></ul><ul><li>Ex: </li></ul><ul><li>public function __construct( ): chamado sempre que o objeto é instanciado </li></ul><ul><li>public function __call($metodo,$parametros ): chamado sempre que um metodo que não existe é chamado </li></ul><ul><li>- Logo o php não vai dar mensagem de erro se você chamar um metodo que não existe. </li></ul>
  44. 44. Zend Framework <ul><li>Um framework que traz uma biblioteca de classes para ajudar na programação web com php </li></ul><ul><li>Alem de trazer a biblioteca ele sugere um jeito de programar e organizar o código usando MVC </li></ul>
  45. 45. Zend Framework Organização dos diretórios <ul><li>Raiz </li></ul><ul><ul><li>Application </li></ul></ul><ul><ul><ul><li>Configs </li></ul></ul></ul><ul><ul><ul><li>Layouts </li></ul></ul></ul><ul><ul><ul><li>Modules </li></ul></ul></ul><ul><ul><ul><ul><li>Próxima pagina </li></ul></ul></ul></ul><ul><ul><li>Library </li></ul></ul><ul><ul><li>Public </li></ul></ul>
  46. 46. Zend Framework Modules (Módulos) <ul><li>Cada módulo é como um sistema completo, mas com algum tipo de ligação entre os outros, como o arpan, panorama, panoptico.. etc </li></ul><ul><li>Modules </li></ul><ul><ul><li>Nome_do_modulo </li></ul></ul><ul><ul><ul><li>Controllers </li></ul></ul></ul><ul><ul><ul><li>Models </li></ul></ul></ul><ul><ul><ul><li>Views </li></ul></ul></ul>
  47. 47. Zend Framework index.php <ul><li>Fica dentro da pasta public e manda o fluxo para o bootstrap </li></ul><ul><li>Único arquivo que não é uma classe </li></ul><ul><li>Vamos olhar o index.php </li></ul>
  48. 48. Zend Framework Bootstrap <ul><li>É uma classe (começa a parte OO) </li></ul><ul><li>Recebe o fluxo do index.php </li></ul><ul><li>Cria e prepara todas as variaveis, objetos e parametros que vão ser usados no sistema </li></ul><ul><li>Vamos olhar o bootstrap </li></ul>
  49. 49. Zend Framework .htaccess <ul><li>Arquivo que fica no public que configura o apache para aquela aplicação </li></ul><ul><li>Parametro importante: </li></ul><ul><li>RewriteEngine On </li></ul><ul><li>RewriteRule ^.*$ index.php [NC,L] </li></ul><ul><li>Ele diz que todos as requisição a partir daquele ponto vão ser direcionadas para o index.php </li></ul>
  50. 50. Zend Framework Rewrite <ul><li>Isso significa se caso for digitado </li></ul><ul><li>http://testes.completo.com.br/msb/cur/public/usuario/login </li></ul><ul><li>- Esta requisição irá para o index.php e este encaminhará para o bootstrap </li></ul>Requisição Index.php Bootstrap
  51. 51. Controllers <ul><li>O framework, a partir do bootstrap vai encaminhar o fluxo da aplicação para um determinado arquivo que fica dentro da pasta controllers de algum modulo usando a seguinte logica </li></ul><ul><li>http://testes.completo.com.br/msb/cur/public/MODULO/CONTROLLER </li></ul><ul><li>Logo a requisição </li></ul><ul><li>http://testes.completo.com.br/msb/cur/public/default/usuario/ </li></ul><ul><li>O fluxo da aplicação vai para o modulo “default” arquivo </li></ul><ul><li>UsuarioController </li></ul>
  52. 52. Action <ul><li>Dentro de uma classe controller podemos ter metodos publicos do tipo Action, eles são metodos que recebem uma requisição com o seguinte formato: </li></ul><ul><li>http://testes.completo.com.br/msb/cur/public/modulo/controller/action </li></ul>
  53. 53. Exemplo <ul><li>class BemvindoController extends Zend_Controller_Action { </li></ul><ul><li>public function olamundoAction() </li></ul><ul><li>{ </li></ul><ul><li>$this->view->assign(&quot;texto&quot;,&quot;Ola Mundo&quot;) ; </li></ul><ul><li>} </li></ul><ul><li>} </li></ul><ul><li>Para chegar nesse action deveriamos digitar </li></ul><ul><li>http://endereco/public/modulo/bemvindo/olamundo </li></ul>
  54. 54. View <ul><li>Relembrando a estrutura de diretórios: </li></ul><ul><li>Modules </li></ul><ul><ul><li>Nome_do_modulo </li></ul></ul><ul><ul><ul><li>Controllers </li></ul></ul></ul><ul><ul><ul><li>Models </li></ul></ul></ul><ul><ul><ul><li>Views </li></ul></ul></ul><ul><ul><ul><ul><li>Nome_do_controller </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Nome_do_action.phtml </li></ul></ul></ul></ul></ul>
  55. 55. View <ul><li>Depois de passar por um action o framework direciona para o seu respectivo view para saida dos dados </li></ul>
  56. 56. Dojo <ul><ul><li>Biblioteca ajax integrada com zend framework </li></ul></ul><ul><ul><li>Dividida em 3 sub-bibliotecas: </li></ul></ul><ul><ul><ul><li>Dojo </li></ul></ul></ul><ul><ul><ul><li>Dijit </li></ul></ul></ul><ul><ul><ul><li>Dojox </li></ul></ul></ul>
  57. 57. Dojo <ul><ul><li>É responsável pelo ajax em si, com os metodos </li></ul></ul><ul><ul><li>xhrPost e xhrGet que fazem a criação da thread e a requisição, alem de outros arquivos componentes basicos, como manipulção de data. </li></ul></ul>
  58. 58. XhrPost e XhrGet <ul><ul><li>Dojo.xhrPost({ </li></ul></ul><ul><ul><li>handleAs: ‘json’, // Formato de retorno </li></ul></ul><ul><ul><li>url: http://teste.com/seila, // Url da requisição </li></ul></ul><ul><ul><li>postData: {“id”:10,”nome”:”fabio”} // parametros do post </li></ul></ul><ul><ul><li>Ou </li></ul></ul><ul><ul><li>form: “formteste”, // nome do formulario com os campos a enviar </li></ul></ul><ul><ul><li>load: function (resposta,xmlArgs) { alert(resposta); </li></ul></ul><ul><ul><li>} // função que vai chamar quando retornar a requisição </li></ul></ul>
  59. 59. Dijit <ul><ul><li>É responsável pelos formularios e seus campos bonitinhos e suas validações. </li></ul></ul><ul><ul><li>Ex: </li></ul></ul><ul><ul><li>dijit.form.DateTextBox </li></ul></ul><ul><ul><li>dijit.form.ValidationTextBox </li></ul></ul><ul><ul><li>Etc... </li></ul></ul><ul><ul><li>- Obs. A Validação do validationTextBox pode ser feita com o uso de Expressão Regular </li></ul></ul>
  60. 60. Dojox <ul><ul><li>São componentes criados a partir de um projeto que ainda não esta 100% maduro e que um dia se transformarão em dojo ou dijit </li></ul></ul><ul><ul><li>O mais importante para nós é o </li></ul></ul><ul><ul><ul><li>dojox.grid.DataGrid </li></ul></ul></ul><ul><ul><li>Obs. Na proxima versão do dojo (1.4) vão aparecer dois novos grids o dojox . grid . EnhancedGrid e o dojox . grid . TreeGrid </li></ul></ul>
  61. 61. Dojo e Zend Framework <ul><ul><li>A integração do dojo com o zend framework é simples, já que o framework gera todo o codigo javascript que inicializa o dojo e seus componentes. </li></ul></ul><ul><ul><li>Restando ao programador apenas o trabalho de instanciar corretamente o componente do dojo já encapsulado pelo framework </li></ul></ul>
  62. 62. Formulario Dojo <ul><ul><li>class Swe_Form_NovoContrib extends Zend_Dojo_Form </li></ul></ul><ul><ul><li>{ </li></ul></ul><ul><ul><li>public function render(Zend_View_Interface $view = null){ </li></ul></ul><ul><ul><li>$this->getView()->headLink ()->appendStylesheet ($this->getView()->baseUrl ( &quot;/swe/styles/sty&quot;.strtolower(Pandora_Constantes::getConstante('clientesigla')).&quot;/inclcontr.css&quot; ) ); </li></ul></ul><ul><ul><li>$this->getView()->headScript ()->prependFile ( $this->getView()->baseUrl ( &quot;/swe/js/inclcontrib.js&quot; ) ); </li></ul></ul><ul><ul><li>$this->getView()->headScript ()->prependFile ( $this->getView()->baseUrl(&quot;/default/js/pandora/validates.js&quot;) ); </li></ul></ul><ul><ul><li> </li></ul></ul><ul><ul><li>$this->getView()->dojo()->requireModule ( 'dojo.data.ItemFileReadStore' ) </li></ul></ul><ul><ul><li>return parent::render($view) ; </li></ul></ul><ul><ul><li>} </li></ul></ul>
  63. 63. Formulario Dojo <ul><ul><li>public function init() { </li></ul></ul><ul><ul><li>$this->setMethod('post'); </li></ul></ul><ul><ul><li>$this->setName('formContrib'); </li></ul></ul><ul><ul><li>$campo = new Pandora_Dojo_Form_Element_ValidationTextBox( &quot;orgao&quot; ); </li></ul></ul><ul><ul><li>$campo->setMsgInvalido(&quot;Digite o nome do seu orgão sem acentos ou ç&quot;) </li></ul></ul><ul><ul><li>->setPreDefDecorator(Pandora_Dojo_Form_Element_ValidationTextBox::NovaLinha) </li></ul></ul><ul><ul><li>->setLabel ( &quot;Orgão: &quot; ) </li></ul></ul><ul><ul><li>->setRequired ( false ) </li></ul></ul><ul><ul><li>->setMaxLength ( 60 ) </li></ul></ul><ul><ul><li>->setRegExp('[a-zA-Z0-9s]{1,}') </li></ul></ul><ul><ul><li>->addFilters(array('StringTrim', 'StringToUpper','StripTags')) </li></ul></ul><ul><ul><li>->setAttrib ( &quot;uppercase&quot;, true ) </li></ul></ul><ul><ul><li>->setAttrib('promptMessage',&quot;Digite o nome do seu orgão sem acentos&quot; ) $campos[] = $campo; </li></ul></ul><ul><ul><li>$this->addElements($campos); </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>} </li></ul></ul>
  64. 64. Documentação <ul><li>http://framework.zend.com </li></ul><ul><li>http://docs.dojocampus.org </li></ul>

×