Zend Framework Tutorial Teil 4:
Zend_Controller, Zend_View und Zend_Tool

Im dritten Teil meines Zend Framework Tutorials habe ich kurz das Model-View-Controller Konzept erläutert. Nach einer Einführung in die Zend_Controller Komponente haben wir den IndexController erstellt. Wenn du die ersten vier Teile noch nicht gelesen hast, hole dies bitte schnell nach.

In diesem vierten Teil des Tutorials werden wir einige Aktions-Methoden anlegen und uns den Einsatz von Zend_Tool anschauen und damit arbeiten. Nach einer kurzen Einführung in Zend_View werden wir die Templates für die erstellten Aktionsmethoden für die Ausgabe erstellen. Dabei werden wir auch die grundlegende Interaktion zwischen Controller und View kennen lernen.

Wenn du über neue Tutorial Teile informiert werden möchtest, abonniere am besten den Feed dieses Blogs. Dann verpasst du garantiert keinen Teil des Tutorials. Es gibt auch Übersicht mit den bisher erschienen Teilen des Tutorials.

Inhaltsverzeichnis

Benötigte Controller und Aktionen ermitteln

Es stellt sich zunächst mal die Frage, welche Controller und welche dazugehörigen Aktionen wir denn für unser TravelloBlog überhaupt benötigen. Um nicht blind in der Gegend herum zu raten, ziehen wir an dieser Stelle die Liste mit den Anforderungen aus dem ersten Teil des Tutorials zu Rate.

Im ersten Schritt gehen wir jede der Anforderungen durch und notieren uns die benötigten Entitäten. Dabei kommt diese Liste heraus (in Klammern die jeweilige Nummer aus unserer Anforderungsliste = Entität):

  • Beitrag (1, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14)
  • Benutzer (1, 2, 11)
  • Kommentar (3, 11)
  • Kategorie (4, 7)
  • Tag (4, 7)
  • Suchindex (13)

Wir sehen also, dass die Entität "Beitrag" der Kern unserer Bloganwendung werden wird, was dich nicht überraschen sollte. Am zweitwichtigsten scheint danach die Entität "Benutzer" zu sein. Wir benötigen somit fürs Erste insgesamt sechs Controller.

Im zweiten Schritt analysieren wir nun, welche Aktionen für die einzelnen Controller benötigt werden. Dies gestaltet sich ein wenig schwieriger, da nicht jede Aktion sofort ersichtlich ist.

In der folgenden Tabelle habe ich in der ersten Spalte die Controller und in der zweiten Spalte die entsprechenden Aktionen notiert (in Klammern steht wieder bei jeder Aktion die Nummer der Anforderung).

Controller Aktionen
Beitrag anlegen (1), ändern (1), löschen (1), anzeigen (3), listen auf Startseite (6), listen nach Kategorie (7), listen nach Tag (7), listen nach Monat (7), Trackback verarbeiten (8), Pingback versenden (8), listen für Newsfeed (9), anzeigen als PDF (12), listen für Suche (13), zeige Bücher von Amazon (14), zeige Fotos von Flickr (14)
Benutzer registrieren (1), ändern (1), einloggen (1*), ausloggen (1*), authentifizieren (1*), anzeigen (2)
Kommentar schreiben (3), benachrichtigen (11)
Kategorie anlegen (4*), ändern (4*), löschen (4*)
Tag anlegen (4*), ändern (4*), löschen (4*)
Suchindex anlegen (13*), ändern (13*), löschen (13*), durchsuchen (13*)

Die mit (1*) markierten Aktionen werden zwar nicht explizit in den Anforderungen genannt. Ich denke aber, dass man davon ausgehen kann, dass diese Aktionen für das Handling eines Benutzer wichtig sein werden.

Zu (4*) ist zu sagen, dass diese Aktionen auch nur indirekt zu erkennen sind. Wenn ein Beitrag einer Kategorie und/oder einem Tag zugeordnet werden können soll, müssen Kategorien und Tags natürlich auch angelegt, geändert und gelöscht werden können.

Bei (13*) gilt ähnliches. Auch diese Aktionen resultieren indirekt aus der entsprechenden Anforderung. Ohne eine vorhandenen Index kann selbiger auch nicht durchsucht werden.

Nach dieser ersten Analyse haben wir nun einen ersten Überblick, welche Controller und welche Aktionen wir benötigen werden.

Weitere Controller Dateien

Nach der theoretischen Einführung in das MVC-Konzept und der Ermittlung aller benötigten Controller und Aktionen gibt es nun endlich Butter bei die Fische. Mit Hilfe der Zend_Controller Komponente hatten wir ja unsere erste Controller Klasse bereits geschrieben, den IndexController.

Du erinnerst dich: Die Controller Klasse muss mit dem Namen des Controllers starten und auf "Controller" enden, wobei der Name mit einem Großbuchstaben beginnen muss. Für unser TravelloBlog würde dies folgende Controller Namen ergeben:

  • IndexController
  • ArticleController
  • UserController
  • CommentController
  • CategoryController
  • TagController
  • SearchController

Den IndexController wurde ja schon beim Erstellen des Projekts automatisch angelegt, im nächsten Schritt definieren wir nun unseren ArticleController mit allen notwendigen Methoden.

ArticleController

Wir erstellen im Verzeichnis "/travelloblog/application/controllers" eine Datei mit Namen ArticleController.php und folgendem Code:

PHP:
  1. <?php
  2.  
  3. class ArticleController extends Zend_Controller_Action
  4. {
  5.     function indexAction()
  6.     {
  7.  
  8.     }
  9. }
  10.  
  11. ?>

Was wird passieren, wenn du jetzt "http://localhost/travelloblog/public/" aufrufst? Du bekommst unsere Startseite. Wie kommen wir nun an die Article(-Seite) ran? Ganz einfach: Du musst die Seite mit Angabe des Controllernamens aufrufen, also: "http://localhost/travelloblog/public/article".
Probier es aus und schau, was passiert.

Du hast es vielleicht schon geahnt - es gibt eine Fehlermeldung:
article/index.phtml' not found in path (..\application\views\scripts\)
Das Problem: Wir brauchen eine Datei index.phtml im Verzeichnis "/article/".

Also lege bitte das Verzeichnis "views/scripts/article" an und erstelle dort eine Datei index.phtml mit dem Inhalt:

HTML:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2.  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <title>Zend Framework Tutorial</title>
  4. </head>
  5. Artikel Index-Seite<br />
  6. Hier werden alle Artikel angezeigt.
  7. </body>
  8. </html>

Und wenn du jetzt "http://localhost/travelloblog/public/article" in deinem Browser aufrufst, siehst du "Artikel Index-Seite".

Soweit so gut. Wenn du dir oben nochmals die gewünschten Aktionen anschaust, dann siehst du, dass wir mit den Artikeln ja einiges machen wollen, uA:
Einen Artikel anzeigen, einen neuen Artikel anlegen und einen bestehenden Artikel ändern oder löschen.
Alles Aktionen, die einen Artikel betreffen, also müssen wir den Article-Controller (ArticleController.php) um diese Aktionen (Methoden = Funktionen) erweitern. Von diesen Aktionen legen wir jetzt nur noch die showAction an:

PHP:
  1. <?php
  2.  
  3. class ArticleController extends Zend_Controller_Action
  4. {
  5.     //--Default-Aktion
  6.     public function indexAction()
  7.     {
  8.     }
  9.  
  10.     //-- Artikel anzeigen
  11.     public function showAction()
  12.     {
  13.     }
  14.  
  15. }
  16.  
  17. ?>

Wenn du jetzt einen Artikel anzeigen möchtest, musst du "http://localhost/travelloblog/public/article/show" aufrufen. Dir ist ja inzwischen klar, dass das wieder eine Fehlermeldung geben würde, da wir ja noch kein View-Skript mit dem Namen Show angelegt haben (wenn du es nicht glaubst, probier es einfach mal aus ;) ).

Also erstelle bitte im Verzeichnis "/view/scripts/article" eine Datei show.phtml und schreibe dort rein:

HTML:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2.  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <title>Zend Framework Tutorial</title>
  4. </head>
  5. Artikel Show-Seite<br />
  6. Hier wird ein einzelner Artikel angezeigt.
  7. </body>
  8. </html>

Wenn du jetzt "http://localhost/travelloblog/public/article/show" aufrust, bekommst du die Show-Seite angezeigt.

Das Prinzip ist dir inzwischen klar?
Wir haben eine bestimmte Aufgabe bzw. einen Aufgabenbereich. Um die Verwaltung der Aufgaben kümmert sich der Controller. Also legen wir im Verzeichnis controllers einen Controller an. Dieser Controller heißt so, wie unsere Aufgabe. In unserem Fall ist der erste Aufgabenbereich erstmal alles, was mit der Verwaltung von Artikeln zu tun hat. Also nennen wir unseren Controller ArticleController.

In diesem Controller werden nun die gewünschten Aufgaben als Aktionen eingetragen. Aktionen sind Methoden mit Namen ...Action(). Eine Methode ist nichts anderes als eine Funktion. Funktionen werden bei Klassen jedoch Methoden genannt - also lass dich nicht verwirren.

Eine Methode sollte/muss immer eine indexAction() sein. Das hat den Vorteil, dass eine Defaultaufgabe übernommen wird, wenn der Controller ohne weitere Angaben aufgerufen wird. Du kennst das Prinzip ja schon von vom default-Eintrag bei einer switch-Anweisung. Ich hatte das ja schon im letzten (3.) Teil unseres Tutorials genauer erläutert. Zur Auffrischung lies dir das Routing nochmals durch.

Um die jeweiligen Aktion aufrufen und optisch darstellen zu können brauchen wir ein Skript. Dieses liegt in einem Unterverzeichnis im Pfad "/views/scripts/". Das Unterverzeichnis heißt immer so, wie der jeweilige Controller, also z.B. index. article, user, error usw.

In dem entsprechenden Unterverzeichnis müssen wir dann das Skript erstellen. Der Name des Skripts ist identisch mit dem der jeweiligen Methode, also index, show, create usw. Die Endung ist immer .phtml.

Du siehst, es ist alles sehr logisch aufgebaut und, wenn man mal das Prinzip des Aufbaus verstanden hat, ist es doch wirklich einfach, oder?

Hier das Ganze noch mal zum anschauen ;)

    /application
        /controllers
            IndexController.php
                public function indexAction()
            ArticleController.php
                public function indexAction()
                public function showAction()
                public function createAction()
                public function changeAction()
                public function deleteAction()
        /views
            /scripts
                /index
                    index.phtml
                /article
                    index.phtml
                    show.phtml
                    create.phtml
                    change.phtml
                    delete.phtml

Zend_Tool im Einsatz

Erste Berührungen mit Zend_Tool hatten wir ja schon beim Erstellen unseres TravelloBlog Projektes. Wir wollen es uns nun etwas genauer anschauen und auch zum Einsatz bringen. Leute, es ist ne feine Sache und spart wirklich einen Haufen Tipperei.
Es schadet auch nichts, sich das im Handbuch (nochmals) durchzulesen.

Wenn du dir oben nochmals die gewünschten Aktionen anschaust, dann siehst du, dass wir ja noch einiges machen müssen. Du kannst die ganzen Controller, Aktionen und Skripte natürlich per Hand anlegen - wie das geht, weisst du ja jetzt - schneller und komfortabler ist es jedoch mit Zend_Tool.

Gehe jetzt erstmal auf Kommandozeilen-Ebene (unter Windows: Start->Ausführen->cmd). Dort angekommen gehe bitte in das Verzeichnis "travelloblog", also cd \xampp\htdocs\travelloblog oder \programme\zend\apache2\htdocs\travelloblog oder wo immer dein TravelloBlog-Projekt liegen mag.

Wenn du jetzt zf aufrufst bekommst du eine Fehlermeldung:
An Error Has Occured
An action and provider is required

Im Anschluss daran bekommst du (als Hilfe) jedoch auch eine Anwendungshilfe, bei der alle möglichen Eingabemöglichkeiten aufgelistet werden.

So, was müssen wir jetzt tun? Zunächst einmal die weiteren Controller anlegen. Index- und ArticleController haben wir ja bereits, also kümmern wir uns als nächstes um den UserController.
Schauen wir uns die Anwendungshilfe an um herauszufinden, wie das geht:

Controller
   zf create controller name index-action-included[=1] module

Das index-action-included[=1] module interessiert uns zunächst mal nicht. Das brauchen wir erst viel später, wenn wir uns mit Modulen beschäftigen.
Also bleibt zf create controller name übrig.

Gut, dann gib bei dir bitte ein:
zf create controller user

Es dauert einen kurzen Moment und dann erscheinen folgende Meldungen:

Creating a controller at ...
Creating an index action method in controller user
Creating a view script for the index action method at ...
Creating a controller test file at ...
Updating project profile ...

Die Pfade habe ich jeweils durch ... ersetzt.

Was ist also passiert?
- ein Controller mit Namer User wurde angelegt (UserController.php)
- dort wurde die indexAction Methode reingeschrieben (public function indexAction())
- das Verzeichnis "user" wurde bei den view Skripten angelegt (/views/scripts/user)
- ein index Skript wurde im user Verzeichnis angelegt (index.phtml)
(den Rest lass ich jetzt mal weg, interessiert uns momentan nicht)

Glaubst du nicht? Dann schau nach. ;)

Hausaufgabe: Lege die anderen Controller in gleicher Weise an.

HINWEIS:
Am Besten ist es, wenn du - wie im Teil 2 beschrieben - den Pfad zu den zf Dateien gesetzt hast. Damit beugst du eventuellen Problemen vor und musst nicht immer den kompletten Pfad zu zf.bat mit angeben.

Wir sind jedoch noch nicht ganz fertig.
Du erinnerst dich, dass wir beim ActionController nur die Action-Methoden index und show angelegt haben? Es fehlen noch create, change, delete.
Die legen wir jetzt an - und ebenfalls mit Hilfe von Zend_Tool.

Schau dir nochmals bei der Eingabehilfe an, wie das funktioniert.
Es ist ähnlich wie beim Anlegen eines Controllers:
Erstelle | eine Aktions-Methode (action) | mit Namen create | im Controller article
Also gib bitte bei dir ein:
zf create action create article

Ratter, ratter, ratter und dann:

Creating an action named create inside controller at ...
Updating project profile ...
Creating a view script for the create action method at ...
Updating project profile ...

Schau nach und du wirst feststellen:
- die Aktions-Methode createAction wurde im ActionController angelegt
- die Datei create.phtml wurde im Verzeichnis "/views/scripts/article/" hinzugefügt

Als Hausaufgabe legst du jetzt noch auf gleiche Weise die beiden fehlenden Aktions-Methoden change und delete an.

Download

Der aktuelle Stand des Tutorials nach diesem vierten Teil kann auch herunter geladen werden.
So lange das Tutorial noch nicht komplett auf die Version ab 1.8 umgeschrieben ist, werden die Sourcen für beide Versionen angeboten:

Die Zip Datei enthält nicht die Bibliotheken (libraries) der aktuellen Version des Zend Frameworks. Die musst du bitte selber in das entsprechende Verzeichnis kopieren.

Zusammenfassung

In diesem Teil meines Zend Framework Tutorials haben wir die benötigten Controller und Aktionen anhand unserer Anforderungsliste ermittelt. Wir haben den ArticleController erstellt, Aktionsmethoden angelegt, die grundlegende Interaktion zwischen Controller und View kennengelernt und die Anwendung von Zend_Tool gelernt.

In nächsten Teil des Tutorials werden wir uns um die View und Layout Komponenten unseres Projektes kümmern. Nach einer kurzen Einführung in Zend_View werden wir die Templates für die erstellten Aktionsmethoden für die Ausgabe erstellen sowie einige Hilfsmethoden für die Ausgabe kennen lernen. Das alles wird dann noch mit Zend_Layout verfeinert.

Fragen, Probleme und Anregungen bitte nicht per E-Mail senden, sondern hier in die Kommentare stellen. Dann haben alle etwas davon.

Changelog

  • 11.10.2009 - Anpassung an Version 1.8 und höher
  • 11.10.2009 - Einsatz von Zend_Tool hinzugefügt
  • 09.11.2009 - Hinweis zur Pfadangabe zum Zend_Tool hinzugefügt

Navigation

Kommentare

Autor: Uwe E. Schirm
Datum: Freitag, 23. Januar 2009 1:30
Trackback: Trackback-URL Themengebiet: Zend Framework Tutorial für Anfänger

Feed zum Beitrag: RSS 2.0 Diesen Artikel kommentieren

17 Kommentare

  1. 1

    Hallo,

    ich habe Probleme wegen /article. Wenn ich http:// …/article aufrufe, bekomme ich folgender Fehlermeldung: NOT FOUND requested URL/article was not found on this Server. IndexController klappt aber. Ich arbeite mit Ubuntu und habe die aktuellste Zend Framework runtergeladen. Was mache ich falsch?
    Vielleich muss ich noch irgendwie in bootstrap.php den Controllenammen “article” bekanntgeben. Auf eine schenelle Antwort freue ich mich.

    Dankeschön

    Canser

  2. 2

    Auch hier das Gleiche: Ab Version 1.8 wurde der Bootstarp geändert, das Tutorial ist aber noh nicht angepasst. Daher treten kurzfristig (noch) Probleme auf.

  3. 3

    Weiter mit meinen Erfahrungen zu 1.8.2:

    Den ArticleController erstellt man mit dem Zend_Tool, das man diesmal nicht im dir htdocs aufruft, sondern im Projektverzeichnis:

    zf create controller article

    Dieser Befehl legt automatisch die ArticleController.php und die zugehörige View. an. Deshalb tritt der Fehler auch nicht auf.

    Zum anlegen der Aktionen ruft man nacheinander wieder Zend_Tool auf:

    zf create action show article
    zf create action create article
    zf create action change article
    zf create action delete article

    Dadurch werden die Actions im Controller UND die Views angelegt. Mehr ist also nicht zu tun.

  4. 4

    Wenn ich die Seite (Siehe URL) aufrufe,
    bekomme ich einen Fehler, der mir sagt. er findet den travelloblog controller nicht!
    Es ist wie wenn den zeiten Parameter nach Host bereits als Controller-Name genommen wird.
    Wo könnte es falsch sein? Version 1.9.3PL1
    URL:http://localhost/travelloblog/public/article/show.phtml

    An error occurred

    Page not found

    Exception information:

    Message: Invalid controller specified (travelloblog)

    Stack trace:

    #0 C:\xampp\htdocs\travelloblog\library\Zend\Controller\Front.php(946): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
    #1 C:\xampp\htdocs\travelloblog\library\Zend\Application\Bootstrap\Bootstrap.php(77): Zend_Controller_Front->dispatch()
    #2 C:\xampp\htdocs\travelloblog\library\Zend\Application.php(358): Zend_Application_Bootstrap_Bootstrap->run()
    #3 C:\xampp\htdocs\travelloblog\application\run_app.php(26): Zend_Application->run()
    #4 C:\xampp\htdocs\travelloblog\public\index.php(3): require(‘C:\xampp\htdocs…’)
    #5 {main}
    Request Parameters:

    array(4) {
    ["controller"]=>
    string(12) “travelloblog”
    ["action"]=>
    string(6) “public”
    ["article"]=>
    string(4) “show”
    ["module"]=>
    string(7) “default”
    }

  5. 5

    Nun habe ich den virtual host Eintrag entfernt und es funktioniert wieder!
    Ich dachte, ich könnte weiterhin den normalen URL eingeben! offenbar ist es nicht möglich.
    Ich bin unsicher! Soll ich ein anderes Tutorial nehmen, oder soll ich warten, bis das Tutorial fertig revidiert ist?
    Bis zum nächsten Probleme

  6. 6

    Hints zur Zend ver. 1.9.3:
    “zf create controller article” ging bei mir nicht, musste dazu in \projektname\application\configs\application.ini
    und habe dort den folgenden “include path” entfernt (workaround auch zu finden unter google, der include path kommt wohl irgendwo doppelt vor):
    includePaths.library = APPLICATION_PATH “/../library”

    Application.ini sieht dann so aus:

    ====
    [production]
    phpSettings.display_startup_errors = 0
    phpSettings.display_errors = 0
    bootstrap.path = APPLICATION_PATH “/Bootstrap.php”
    bootstrap.class = “Bootstrap”
    resources.frontController.controllerDirectory = APPLICATION_PATH “/controllers”

    [staging : production]

    [testing : production]
    phpSettings.display_startup_errors = 1
    phpSettings.display_errors = 1

    [development : production]
    phpSettings.display_startup_errors = 1
    phpSettings.display_errors = 1
    ===

    Weiterhin:
    Der Befehl “zf create action show article” geht bei mir nicht, sofern ich den Controller und die View zuvor “von Hand” anlege. Hab dann zunächst den alten articleController mitsamt View gelöscht und anschließend den article controller über die console erstellt (wie weiter unten beschrieben), dann ging auch “zf create show article” => entsprechend einfach das “händisch-erstellte” löschen und über cmd arbeiten ;)

  7. 7

    @Stephan ich hatte das gleiche Problem, man kann anscheinend nur Actions mit dem ZF Tool erstellen wenn man auch die dazugehörige Klasse mit ZF Tool erstellt hat.

  8. 8

    Hallo,
    ich kann überhaupt nichts über CMD machen -.- sprich bei mir findet er den Befehl “zf” gar nicht.
    [...]
    Der Befehl “zf” ist entweder falsch geschrieben oder konnte nicht gefunden werden.

    Ich bin definitiv im Pfad:
    C:\xammp\htdocs\travelloblog

    Aber nichts tut sich -.-

    Hat jemand eine Ursache für das Problem?
    Danke Gruß Schorschi

  9. 9

    Schorschi, kontrollieren zunächst einaml, ob die zf.* Dateien in c:\xampp\php sind.
    Wenn ja, ok, wenn nein, kopiere sie dorthin.
    Dann probier mal zf aufzurufen, indem du den Pfad zu zf angibst, denn offensichlich ist bei dir der Pfad zu dem Verzeichnis nicht gesetzt:
    c:\xampp\php\zf create …

  10. 10

    Hallo Uwe,
    danke für die Antwort aber es funktioniert noch immer nicht so richtig.
    Also ich habe die drei Dateien (zf.bat, zf.sh und zf.php) in dem Verzeichnis c:\xampp\php\
    Wenn ich jetzt über cmd auf “cd c:\xampp\php” gehe und dann den Befehl eingebe kommt erst einmal diese Fehlermeldung: “Die Anwendung konnte nicht gestartet werden, weil iconv.dll nicht gefunden wurde. Neuinstallation der Anwendung könnte das Problem beheben.” Aber immerhin kommt im Hintergrund sprich im cmd Feld ein langer *******ZF Error******* und davor noch ein PHP Error. Ich weiß einfach nicht was da los ist. In der ZF Error wird irgendwas von ZEND_TOOL_INCLUDE_PATH erwähnt, weiß aber nicht so richtig damit etwas anzufangen.

    Mein ZF Projekt liegt unter: c:\htdocs\travelloblog völlig normal. Wenn ich jetzt über cmd auf das Verzeichnis gehe und “zf” eingebe kommt: “Der Befehl “zf” ist entweder falsch geschrieben oder konnte nicht gefunden werden.”

    Vielen Dank Gruß,
    Schorschi

  11. 11

    Hi,
    sooo ich habe nun den Apache Server komplett neu aufgespielt und auch das Framework noch einmal neu “installiert”. Jetzt funktioniert auch alles bestens. Sprich ich kann die zf.* Dateien in den Ordner /php/ packen und kann dann über CMD die “zf” funktion gebrauchen.
    NUR hier im Tutorial wird beschrieben, dass man nun “cd c:\xampp\htdocs\travelloblog” eingeben soll und dann dort “zf create controller name”. Aber da sagt er mir, dass es den Befehl zf nicht gibt. Eigentlich logisch, da in dem Ordner unter htdocs auch keine zf.bat etc. liegt!
    Wenn ich jetzt im den cd c:\xampp\php Pfad “zf create controller name” eingebe macht er schon das richtige nur logischerweise weiß er nicht, wo bzw. in welchem Projekt er den Controller anlegen soll.
    “An Error Has Occurred

    A project profile was not found.”

    Wie kann ich das Problem lösen?
    Danke Gruß,
    Schorschi

  12. 12

    Diese Meldung war wohl ein Bug von Zend_Tool und hab ich auh eine zeitlang gehabt. Seit der Installation von 1.9.5 gibt es bei mir damit aber keine Probleme mehr.
    Wenn Zend_Tool bei dir – warum auch immer – momentan nicht funktioniert, leg halt die Verzeichnisse und Dateien per Hand an. Ist ja auch kein Problem ;)

  13. 13

    Aber so ist es doch 10000 mal leichter. Und wenn ich in Zukunft mit dem Zend Framework meine Projekte bauen möchte, dann will ich nicht immer per Hand die Controller etc. anlegen!
    Ich hoffe mir kann jemand im Zend Forum helfen -.-

    Aber ich habe das doch richtig verstanden ne? Ich muss in das Projekt Verzeichnis gehen (cd ..) und nicht in das xampp/php Verzeichnis.. obwohl im Projekt Verzeichnis gar keine zf.bat etc. liegt??!!

  14. 14

    Hi,

    ich bekomme beim Versuch:

    zf.sh create action anlegen artikel

    diesen Fehler:
    Fatal error: Call to undefined function token_get_all()

    Das Ganze läuft auf OpenSuse mit PHP 5.2.11 und Zend 1.9.

    create controller artikel klappt auch ohne Probleme.

    Vielleicht weiß je jemand von euch eine Lösung.

    Gruß

  15. 15

    Achja…

    nächstes problem… ich komme zwar auf die /public/ aber auf keinen sonstigen Controller wie zb /public/atrikel/

  16. 16

    Es kommt zu einer Fehlermeldung, wenn wie in deinem Beispiel angeben, die Seite AricleController.php am Ende ?> enthält. Wenn ich mich richtig erinnere, habe ich irgendwo gelesen, dass eine php-Datei, die das zend framework verwendet, nicht mit ?> enden darf. Korrigert mich bitte, wenn das nicht prinzipiell der Fall ist.

    Gruß
    Jochen

  17. 17

    Fetzt… das geht.
    Ist ja echt grandios was das Framework alles kann.
    Danke dass du dieses Tutorial erstellt hast, das hilft echt bei der Einarbeitung.
    Mach bitte weiter so.

Kommentar abgeben