Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Zend Dojo

3,760 views

Published on

In questo talk si parlerà dell’integrazione della libreria javascript Dojo Toolkit nello Zend Framework e di come sia possibile sviluppare applicazioni RIA direttamente da PHP senza dover scrivere codice in javascript.In particolare verranno presentati i seguenti argomenti: integrare le widget Dijit con Zend_View, Form 2.0 con Zend_Form e Dojo e creare un datastore remoto con Zend_Dojo_Data.

Published in: Technology, Education
  • Be the first to comment

Zend Dojo

  1. 1. Zend_Dojo: l'integrazione della libreria Dojo nello Zend Framework by Enrico Zimuel Senior Consultant - Zend Technologies Email: enrico.z@zend.com Blog: http://www.zimuel.it/blog Copyright © 2007, Zend Technologies Inc.
  2. 2. Sommario • Che cos'è lo Zend Framework (ZF)? • Che cos'è Dojo? • L'architettura di Dojo • Configurare l'ambiente Dojo in ZF: il view helper dojo() • Utilizzo dei widgets Dijit nello Zend_View • Form 2.0 con Zend_Form e Dojo
  3. 3. Zend Framework • Framework PHP open source  Semplicità di utilizzo  Architettura flessibile  Funzionalità Web 2.0 • Web services • Ajax (integrazione Dojo, Adobe Flex)  Codice di qualità (testato con PHPUnit) • Scritto in PHP 5, Object Oriented, MVC • Versione 1.8.1, download ed info: http://framework.zend.com/ Name of this section | | 3 May 15, 2009
  4. 4. Dojo • Dojo è una libreria JavaScript open source per la realizzazione di Rich Internet Applications (RIA) • Caratteristiche principali:  performance;  affidabilità;  ampia disponibilità funzioni: http://dojotoolkit.org/ manipolazione DOM, animazioni, Ajax, gestione Eventi e normalizzazione keyboard  Supporto multi-browser (Firefox, IE, Safari, Opera, etc)  internazionalizzazione (i18n) e accessibilità (a11y) | | 4 May 15, 2009
  5. 5. Dojo: curiosità • Dōjō, è un termine giapponese che significa etimologicamente luogo (jō) dove si segue la via (dō) 道場 | | 5 May 15, 2009
  6. 6. L'architettura di Dojo Libreria di base < 30 Kb | | 6 May 15, 2009
  7. 7. Dojo: esempi http://demos.dojotoolkit.org | | 7 May 15, 2009
  8. 8. Zend Framework e Dojo • Disponibile a partire dalla versione 1.6 dello Zend Framework • Dojo view helper per la gestione dell'ambiente Dojo • View helpers di tipo Dijit per la creazione di form ed elementi • Gestione delle strutture dojo.data con la classe Zend_Dojo_Data • JSON-RPC implementazione server | | 8 May 15, 2009
  9. 9. Supporto Dijit • Supporto della maggior parte dei componenti dijits (Dojo widgets) • Utilizzo di view helpers per il rendering dei dijits  I dijits sono generati automaticamente (default)  Possibilità di specificare lo stile di generazione • Form decorators per i layout ed i form dijits  Utilizzo di layout dijit decorators specifici per forms, sub forms e gruppi di visualizzazione • Gestione degli elementi di un form dijits  Mappatura con i dijit view helpers | | 9 May 15, 2009
  10. 10. Classic web application model (sync) | | 10 May 15, 2009
  11. 11. Ajax (async) | | 11 May 15, 2009
  12. 12. dojo.data Payload • dojo.data è una struttura dati utilizzata dai componenti Dojo • Zend_Dojo_Data gestisce la generazione di strutture dati compatibili con dojo.data • Possibilità di gestire ogni oggetto (arrays, Iterators, etc.) tramite un identificatore utilizzato poi per la creazione di una struttura JSON (JavaScript Object Notation). • JSON è un formato adatto per lo scambio dei dati in applicazioni client-server | | 12 May 15, 2009
  13. 13. Esempio di struttura dati in JSON { quot;typequot;: quot;menuquot;, quot;valuequot;: quot;Filequot;, quot;itemsquot;: [ {quot;valuequot;: quot;Newquot;, quot;actionquot;: quot;CreateNewDocquot;}, {quot;valuequot;: quot;Openquot;, quot;actionquot;: quot;OpenDocquot;}, {quot;valuequot;: quot;Closequot;, quot;actionquot;: quot;CloseDocquot;} ] } • Formato: { “etichetta” : “valore” } | | 13 May 15, 2009
  14. 14. Supporto JSON-RPC • JSON-RPC è un protocollo di Remote Procedure Call che utilizza JSON per la serializzazione dei messaggi • Lo schema JSON specifica il Service Mapping Description (SMD) per la definizione dei metodi disponibili • Zend_Json_Server implementa un server di tipo JSON-RPC con il supporto SMD • Utilizzato principalmente nello sviluppo di applicazioni client “pesanti” dove il codice client è incluso in una View del modello MVC | | 14 May 15, 2009
  15. 15. dojo() View Helper • Impostazione dell'ambiente dojo  $view->addHelperPath('Zend/Dojo/View/Helper/', 'Zend_Dojo_View_Helper'); • Percorso delle librerie javascript (CDN o locale)  $view->dojo()->setLocalPath('...') • Impostazione dei paths per I moduli personalizzati  $view->dojo()->registerModulePath('...') • Impostazione del dojo.require per l'inclusione arbitraria di moduli dojo  $view->dojo()->requireModule('...') • Impostazione dell'evento onLoad | | 15 May 15, 2009
  16. 16. dojo() View Helper - temi • Dojo consente la creazione di temi personalizzati per i dijits (widgets).  $view->dojo()-> addStylesheetModule('dijit.themes.tundra'); • Il path del tema è ricostruito sostituendo al '.' il separatore di directory ed utilizzando l'ultimo valore come nome del file .CSS. • dijit.themes.tundra -> dijit/themes/tundra/tundra.css • Quando si utilizza un tema è necessario impostarlo nel file HTML, il metodo più sicuro è includerlo nel body: <body class=”tundra”> | | 16 May 15, 2009
  17. 17. Dijit-Specific View Helpers • “Dijit è un sistema di elementi grafici (widget) sviluppato sulla base di dojo” (manuale Dojo) • Zend Framework fornisce un insieme di view helper per l'utilizzo di dijit, essi si suddividono in tre categorie:  Layout Containers  Form Dijit  Form Elements | | 17 May 15, 2009
  18. 18. Using Layers (custom builds) • Ogni dojo.require effettua una richiesta al server per il download del relativo file javascript • Se sono presenti più dijits si avranno numerose richieste al server con evidenti rallentamenti!!! • In Dojo c'è la possibilità di creare custom builds tramite le utils fornite con la libreria • I file vengono raggruppati in layers (un singolo file JS). | | 18 May 15, 2009
  19. 19. Zend_Dojo: esempio | | 19 May 15, 2009
  20. 20. Riferimenti • Matthew A.Russell “Dojo, the definitive guide” O'Reilly (2008) • Rawld Gill, Craig Riecke, Alex Russell “Mastering Dojo. JavaScript and Ajax Tools for Great Web Experiences” The Pragmatic Bookshelf (2008) • Frank Zammetti “Practical Dojo Projects” Apress (2008) • Peter Svensson “Learning Dojo” Packt Publishing (2008) | | 20 May 15, 2009
  21. 21. Grazie! Per maggiori info: http://www.zend.com

×