Mittwoch, Mai 7th, 2008
Zend Framework ist so Aufgebaut, dass man alles Global anlegen kann oder das ZF für alle Projekte gemeinsam nutzt. So kann man auch eigenes ZF Komponente Global anlegen.
Ich zeige wie man eigen View Helper anlegt, den man in allen Projekten nutzen kann und noch der dazu getrennt von ZF ist.
Ich mache ein kleinen Helper der mir den cheked Attribut in die Inputs schreibt.
Die Voraussetzung dafür ist, dass man ZF und eigene Global Library in einem Verzeichnis legt welcher auch im include_path angehängt ist.
Dann legt man seine Globale Komponenten an:
library/
Global/
View/
Helper/
CheckedInput.php
Zend/
Die Klasse sieht so aus:
<?php
class Global_View_Helper_CheckedInput
{
public function checkedInput($val, $eq)
{
echo $val == (string) $eq ? ' checked="checked"' : '';
}
}
In der Bootstrap Datei wird der Pfad an die View übergeben:
$viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer(new Zend_View());
$viewRenderer->view->addHelperPath('Global/View/Helper', 'Global_View_Helper');
Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
Jetzt kann man den Helper in allen Views der Projekte benutzen:
<input type="radio" name="test" value="a" <?php $this->checkedInput('a','b') ?>>
Posted in Zend Framework | 1 Comment »
Donnerstag, April 24th, 2008
Heute hab ich eine Seite mit Videos gefunden, die den Anfängern das Zend Framework mit einfachen Schritten heranführen. Es ist wirklich sehr einfach mit dem MVC des Zend Frameworks Dynamische Seiten zu erstellen. Diese Tutorials sind in Englisch gehalten, aber zeigen einen guten Einblick in die ersten Schritte des ZF.
Hier geht es zu den Zend Framework Video Tutorials
Posted in Zend Framework | No Comments »
Dienstag, April 8th, 2008
Ein sehr gutes Buch ist im Netz als PDF aufgetaucht.
http://www.ebookee.com/Zend-Framework-in-Action_162238.html
Posted in Zend Framework | No Comments »
Donnerstag, März 13th, 2008
Ich hab vor kurzem den neuen Action_Helper im ZF ausprobiert, und muss mal sagen, dass es eine gute Lösung ist um saubere Ajax Applikationen zu schreiben.
Beim ersten Anlauf bekam ich einen Fehler ‘Context “ajax” does not exist’.
Obwoll ich immer die initContext(‘html’) aufgerufen habe, kam es immer zu diesem Fehler. Dann hab nochmal die Ajax URL angeschaut und hab festgestellt, dass es falscher Pfad war.
/mudule/controller/action/format/ajax
Das format/ajax war komplett hier Falsch, richtig ist fromat/html zu schreiben, aber die Templates werden mit ajax Prefix bennant.
So jetzt mal zu der ganzen Geschichte. Ich schreib Sie in kleinen Schritten.
Zum Anfang müsst ihr kurz wissen, dass Helper AjaxContext die Zend_Controller_Action_Helper_ContextSwitch um eine kleine Funktion erweitert, welche im header den XmlHttpRequest sucht um sicher zu gehen das es sich um Ajax Aufruf handelt.
1.
Man startet den Front_Controller.
$frontController = Zend_Controller_Front::getInstance()
Erzeugt den AjaxContext Helper und legt ihn in den Broker rein:
$ajaxContext = new Zend_Controller_Action_Helper_AjaxContext();
Zend_Controller_Action_HelperBroker::addHelper($ajaxContext);
Nach diesen Schritten könnt ihr euren Dispatcher starten:
$frontController->dispatch();
2.
Jetzt kommen wir zu dem Controller und der Action:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| class IndexController extends Zend_Controller_Action
{
public $ajaxable = array(
'index' => array('html'), // nur ajax
'go' => array('json','xml') // json mit xml
);
public function preDispatch()
{
$this->_helper->ajaxContext()->initContext();
}
public function indexAction()
{}
public function goAction()
{}
} |
3.
Als Letztes legen wir die Templates fest. Je nach Format wird auch ensprechen die prefix angehängt index.ajax.phtml oder go.xml.phtml.
views/
scripts/
index.xml.phtml
go.xml.phtml
go.json.phtml
Und am ende müsst ihr Ajax am besten in jQuery oder Prototype die URL aufrufen:
/controller/index/format/html
/controller/go/format/xml
/controller/go/format/json
So das war mal eine kurze einführung. Den Rest müsst ihr jetzt mal selbt ausprobieren oder einfach mal bei Google suchen
Posted in Zend Framework | No Comments »
Mittwoch, Februar 20th, 2008
Ich bin letztens an ein Problem gekommen, welches mir ein Tag gekostet hat es zu lösen, weil ich einfach nicht logisch nachgedacht hatte.
Folgendes, ich check ein Projekt aus SVN aus und mir fehlt eine Datei “.project” die von Eclipse automatisch eingefügt wird. Das Problem ist jetzt: Wenn es ein PHP Projekt ist und man viele Klassen hat oder ein Framwork (ZF), die man per Kontextmenue anzeigen will (Strg+LeehrT), weiss Eclipse nicht wo man nach den Namen suchen soll. Es wird auch von Eclipse kein Build ausgeführt und man kann kein Clean… auf das Projekt ausführen. Warum?
Lösung: Man öffnet die .project (falls man sie nicht sehen kann, dann wird sie von Ecplipse versteckt, Lösung “Filter ausschalten”) Datei:
<?xml version=”1.0″ encoding=”UTF-8″?>
<projectDescription>
<name>projektXXX</name>
<comment></comment>
<projects></projects>
<buildSpec>
<buildCommand></buildCommand>
</buildSpec>
<natures></natures>
</projectDescription>
Die beiden Knoten <buildSpec> und <natures> müßen mit diesem Teil ersetzt werden:
<buildSpec>
<buildCommand>
<name>org.eclipse.php.core.PhpIncrementalProjectBuilder</name>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.validation.validationbuilder</name>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.php.core.PHPNature</nature>
</natures>
Dann ruft man in Eclipse Menü
Project -> Clean… auf. Jetzt das Häkchen auf das gewünschte Projekt setzen und OK drücken.
Ecplipse führt danach “Building workspace” aus und jetzt hat man ein sauberes PHP Projekt mit eigenen Namespaces.
Dabei müsst ihr beachten, mit welchem Plugin eure Eclipse PHP anzeigt. Ich benutze das PDT mit WST. Wenn ihr andere habt wie PHPEclipse. Dann legt einfach ein Dummy Projekt an und schaut euch dort diese Zeilen aus .project an.
Also ich denke mal, dass das reicht um auch selber das Problem zu lösen.
Posted in Eclipse | 2 Comments »