Zend Framework und das Dojo Toolkit

18
DevDusk München, 19.03.2009 Zend Framework und Dojo Martin Ruprecht, Mayflower GmbH Tobias von Klipstein, Uxebu

description

Vortrag beim Devdusk München am 19.03.2009.

Transcript of Zend Framework und das Dojo Toolkit

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