Download - Zend Framework und das Dojo Toolkit

Transcript
Page 1: Zend Framework und das Dojo Toolkit

DevDusk München,19.03.2009

Zend Framework und Dojo

Martin Ruprecht, Mayflower GmbHTobias von Klipstein, Uxebu

Page 2: Zend Framework und das Dojo Toolkit

DevDusk München,19.03.2009

Übersicht

Einleitung Was umfasst die Integration von Dojo in das

ZF? Wie ist der Aufbau eines Projektes mit den

ZF- Komponenten und Dojo Beispiel Diskussion

Page 3: Zend Framework und das Dojo Toolkit

DevDusk München,19.03.2009

Einleitung

Zend Framework 1.7.6 Dojo 1.2.3

Page 4: Zend Framework und das Dojo Toolkit

DevDusk München,19.03.2009

Integration

Dojo ist Teil des Zend Frameworks CDN (AOL, Google) externals/dojo eigene Builds

View- Helper dojo() Dijits Zend_Dojo_Data & dojo.data JSON RPC mit Zend_Json_Server

Page 5: Zend Framework und das Dojo Toolkit

DevDusk München,19.03.2009

Projektaufbau

MVC- Architektur Zend_Layout- Komponente

Page 6: Zend Framework und das Dojo Toolkit

DevDusk München,19.03.2009

View- Helper dojo()

Platziert im Head- Bereich des Templates Setzt das Dojo- Environment

$this->dojo->enable();

CDN oder lokales Dojo? Stylesheet- Infos parseOnLoad- Verhalten

Page 7: Zend Framework und das Dojo Toolkit

DevDusk München,19.03.2009

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><title>ZF und Dojo</title><style type="text/css"><!-- @import "http://o.aolcdn.com/dojo/1.2.0/dijit/themes/tundra/tundra.css";--></style><script type="text/javascript">//<!-- var djConfig = {"parseOnLoad":true};//--></script><script type="text/javascript" src="http://o.aolcdn.com/dojo/1.2.0/dojo/dojo.xd.js"></script>

<script type="text/javascript">//<!--dojo.require("dijit.form.ValidationTextBox"); dojo.require("dijit.form.Form");//-->

</script></head><body class="tundra">

<h2>Devdusk</h2>

<form dojoType="dijit.form.Form"><dl class="zend_form_dojo"><dt><label for="name" class="required">Name:</label></dt><dd><input id="name" name="name" value="" type="text" invalidMessage="Dies ist ein Pflichtfeld!" required="1" dojoType="dijit.form.ValidationTextBox"></dd></dl></form></body></html>

Page 8: Zend Framework und das Dojo Toolkit

DevDusk München,19.03.2009

Zend_Dojo_Form

Zuweisung im Controller: Zend_Form vs. Zend_Dojo_Form

Page 9: Zend Framework und das Dojo Toolkit

DevDusk München,19.03.2009

Dijit View Helpers

Dijits im Template<button name="btn" id="btn" type="button" value="speichern" iconClass="myButtons" onClick="submitForm()" dojoType="dijit.form.Button">speichern</button>

<button id="btn" dojoType="dijit.form.Button" onclick="submitForm()">speichern</button>

Page 10: Zend Framework und das Dojo Toolkit

DevDusk München,19.03.2009

Zend_Dojo_Data

dojo.data: Zugriff auf Datastores JSON XML CSV

http://docs.dojocampus.org/dojox/data/

Page 11: Zend Framework und das Dojo Toolkit

DevDusk München,19.03.2009

JSON- RPC

„JSON- RPC is a lightweight remote procedure call protocoll. It´s designed to be simple“

Zend_Json_Server

Page 12: Zend Framework und das Dojo Toolkit

DevDusk München,19.03.2009

Service Mapping Description (SMD)

Beschreibt den Service im JSON- Format Dojo: Simple Method Description{"SMDVersion":".1",

"serviceType":"JSON-RPC",

"methods":[{"name":"listBreweries",

"serviceURL":"/rpc/service/class/Devdusk_Beer",

"parameters":[{"name":"args","type":"object"}]

}]

}

Page 13: Zend Framework und das Dojo Toolkit

DevDusk München,19.03.2009

JSON- RPC Request{"method": "add", "params": [{1, 1}], "id": 1}

Aufruf eines Remote- Services (Request) Request: Ein einfaches (JSON) serialisiertes

Objekt. Eigenschaften:

method: Name der Methode die aufgerufen werden soll

params: Übergabeparameter in einem Array

id: Request id

Zend_Json_Server

Page 14: Zend Framework und das Dojo Toolkit

DevDusk München,19.03.2009

JSON- RPC Response{"result": 2, "error": null, "id": 1}

Antwort nach kompletter Anfrage Response: Ein einfaches (JSON)

serialisiertess Objekt. Eigenschaften:

result: NULL im Fehlerfall error: NULL im Erfolgsfall id: muss gleich der Request id sein

Page 15: Zend Framework und das Dojo Toolkit

DevDusk München,19.03.2009

Zend_Json_Server

JSON- RPC Server- Implementierung PHP- Implementierung der SMD Beispiel

Page 16: Zend Framework und das Dojo Toolkit

DevDusk München,19.03.2009

Zend_Json_Server

public function smdAction() { $class = $this->_getParam('class'); $server = new Zend_Json_Server(); $server->setClass($class);

// receive SMD $smd = $server->getServiceMap();

// force the server to deliver a dojo compatible format $smd->setDojoCompatible(true); $smd->setTransport('POST');

// this is for the client calls $smd->setTarget($this->getHelper('url')->url(array('controller'=>'rpc', 'action'=>'service'))) ->setId($this->getHelper('url')->url(array('controller'=>'rpc', 'action'=>'service')));

// assigning the smd to the view $this->view->data = $smd;

// set the right return format $this->getResponse()->setHeader('Content-Type', 'application/json');

// render the template service.phtml $this->render('service'); }

Page 17: Zend Framework und das Dojo Toolkit

DevDusk München,19.03.2009

dojo.rpc.JsonService

Instanziierung: devdusk.rpc.beer = new dojo.rpc.JsonService('/rpc/smd/class/Devdusk_Beer');

Aufruf der Remote- Methode: devdusk.rpc.beer.listBreweries(1).addCallback(function(res){});

Page 18: Zend Framework und das Dojo Toolkit

DevDusk München,19.03.2009

Vielen Dank für die Aufmerksamkeit