Ich habe ein Kopfgeld von 250 Punkten, aber das System erlaubt mir nicht, es sofort zu starten.
Ich bin auf der Suche nach einer Schritt-für-Schritt-Erklärung, wie man von der normalen Ordnerstruktur auf der linken Seite, wo der application
Ordner models,views,controllers
enthält, zur modulbasierten Ordnerstruktur auf der rechten Seite wechselt, wo application
enthält einen modules
Ordner, der die einzelnen Module mit ihrem eigenen models,views,controllers
enthält.
Ich sage "conversion", weil ich nicht glaube, dass zend es uns ermöglicht, Projekte von Anfang an mit der Modularchitektur zu erstellen, aber wenn dies der Fall wäre, wäre das aufwändig und würde die manuelle Änderung dieser Ordnerstruktur überflüssig machen.
Hier sind meine bisherigen Erfahrungen
Wenn ich ein Modul zf create module product
erstelle, wird der Module-Ordner generiert und ein Ordner product
wird darin erzeugt und die views,controllers,models
für dieses Modul werden ebenfalls erzeugt.
Aber ich muss auch das Hauptverzeichnis views,controllers,models
in einen eigenen Ordner modules/default
verschieben. Wenn ich diesen Ordner manuell erstelle und den Hauptcode views,models,controllers
dorthin verschiebe, erhalte ich einen Fehler, wenn ich versuche, dem default
-Modul neue Controller hinzuzufügen. Der Fehler ist, dass das Haupt (jetzt fehlt) views,controllers,models
in application
neu generiert und den neuen Controller in application/controllers/newcont
einfügt, weil er nicht erkennt, dass der Standard-Controller-Ordner existiert manuell in application/modules/default/controllers/
verschoben
Also meine Lösung dazu war zf create module default
, dann kopiere die Haupt views,models,controllers
dort. Es sieht am Ende gleich aus, aber irgendwie macht die Methode zf create module
einen Unterschied. Wenn ich es so mache, werden neue Controller korrekt in application/modules/default/controllers
und nicht application/controllers
Das halbe Problem ist gelöst. Aber wenn ich versuche, die Anwendung zu sehen, sehe ich nichts von index/index
view. Ich bekomme auch keine Fehler, aber ich sehe nichts. Ich vermute, dass es daran liegt, dass die Anwendung nicht weiß, dass die index/index
-Ansicht verschoben wurde.
application/views/scripts/index/index.phtml
application/modules/default/views/scripts/index/index.phtml
Ich vermute, dass ich Änderungen an der application.ini oder an bootstrap.php oder an einem anderen Ort vornehmen muss. Was genau sind die Schritte, um dieses Ding reibungslos zu erledigen und es zum Laufen zu bringen? Ich benutze das neueste ZF 1.10.8. Beginnen Sie mit der Erstellung eines neuen Zend-Projekts, damit die genauen Schritte nicht verwechselt werden.
Hier ist, was ich getan habe, um Ihrem Beispiel zu folgen (von Grund auf):
%Vor% Ich habe dann controllers
, models
und views
von ./application
auf ./application/modules
verschoben.
Als nächstes habe ich application.ini geöffnet und diese Zeile ersetzt (was ZF mitteilt, wo es Controller in einer nicht-modularen App gibt):
%Vor%mit:
%Vor%was ZF sagt wo man Module findet.
Ich habe dann manuell einen Index-Controller für das Produkt-Modul erstellt, damit ich testen konnte, ob das funktioniert hat. Ich traf dann Ссылка , um zu sehen, ob die Standard-Modul-Index-Aktion immer noch funktionierte, tat es nicht, stattdessen bekam ich den Fehler:
Fataler Fehler: Uncaught-Ausnahme 'Zend_Controller_Dispatcher_Exception' mit Meldung 'Ungültige Controller-Klasse (' Default_ErrorController ')' in ...
Es hört sich so an, als ob Sie hier sind.
Es gibt zwei Möglichkeiten, diesen Fehler zu beheben, und die Dokumentation ist ziemlich irreführend (möglicherweise sogar falsch). Es gibt an :
Beachten Sie, dass Controller im Standardmodul kein Namespace-Präfix benötigen. Im obigen Beispiel benötigen die Controller im Standardmodul daher kein Präfix "Default_" - sie werden einfach entsprechend ihrem Basiscontrollernamen gesendet: "IndexController" und "FooController". Ein Namespacepräfix wird jedoch in allen anderen Modulen verwendet.
aber der obige Fehler zeigt eindeutig, dass ZF nach einer ErrorController-Klasse namens Default_ErrorController sucht. Um dies zu beheben, können Sie eines von zwei Dingen tun:
IndexController
auf Default_IndexController
und application / modules / default / controllers / ErrorController.php von ErrorController
auf Default_ErrorController
Oder entfernen Sie diese Zeile:
resources.frontController.params.prefixDefaultModule="1"
aus der application.ini. Diese Zeile weist ZF an, den Namespace 'Default_' für die Standard-Modulklassen zu verwenden. Ohne ihn wird nur nach 'IndexController' gesucht. Ich ging für die letztere Option, und Ссылка arbeitete dann wie erwartet.
In Ihrem Fall sagten Sie, Sie hätten eine leere Seite bei / index / index, was entweder:
bedeutet Um die letzte Option zu überprüfen, öffnen Sie application.ini und temporär ändern Sie phpSettings.display_errors
von 0 auf 1 im Produktionsabschnitt. Wenn Sie dann den gleichen Fehler haben, den ich oben hatte, werden Sie hoffentlich in der Lage sein, alles in Ordnung zu bringen.
Ich hoffe, das ist hilfreich. Alles, was ich sagen kann, ist, dass du nicht zu sehr auf Zend_Tool angewiesen bist, um deine App zu verwalten - es kann nicht alles machen, und oft ist es einfacher, Dinge manuell zu verschieben, als alles über zu versuchen. der Befehl zf; vor allem bei der Umstrukturierung.
Tags und Links php zend-framework zend-view