php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 3 Stimmen, 2,33 durchschnittlich.
Alt 26.04.2011, 08:02  
Erfahrener Benutzer
 
Benutzerbild von dreamcatcher
 
Registriert seit: 28.12.2010
Beiträge: 603
PHP-Kenntnisse:
Anfänger
dreamcatcher wird schon bald berühmt werden
Standard [Erledigt] Zend Framework - Create Modules BasePath of Default Model not working corr

Guten Morgen,

ich habe meine Standardapplikation nun so verändert, dass sie gemäß den "Best practise" Regeln (http://framework.zend.com/manual/en/...e.project.html) extra in "modules" ausgelagert ist.

Nach einigem googlen klappt auch alles wunderbar, jedoch kann ich mir eine Sache nicht erklären.

Sowohl in einem Tutorial-Video (Ging um ZF 1.9) und auch im Internet (http://www.zfforums.com/zend-framewo....html#post1402) steht dass man der Default Module Klasse kein Präfix anhängen muss.

Grund ist die Änderung in der ./application/bootstrap.php
PHP-Code:
    protected function _initAutoload(){
        
$modelLoader = new Zend_Application_Module_Autoloader(array(
                        
// Prefix of our Classes @Modules
                        
'namespace' => '',
                        
// Where to look for Classes on HDD
                        
'basePath' => APPLICATION_PATH.'/modules/default')); 
Jedoch schlägt das bei mir überhaupt nicht an.

Ich bekomme folgenden Fehler:

PHP-Code:
Fatal errorUncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller class ("Default_ErrorController")' in D:_usersuser_name_web_devZendFrameworktutorial1libraryZendControllerDispatcherStandard.php:352 Stack trace#0
 
D:_usersuser_name_web_devZendFrameworktutorial1libraryZendControllerDispatcherStandard.php(262): Zend_Controller_Dispatcher_Standard->loadClass('ErrorController'#1
 
D:_usersuser_name_web_devZendFrameworktutorial1libraryZendControllerFront.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #2
 
D:_usersuser_name_web_devZendFrameworktutorial1libraryZendApplicationBootstrapBootstrap.php(97): Zend_Controller_Front->dispatch() #3
 
D:_usersuser_name_web_devZendFrameworktutorial1libraryZendApplication.php(366): Zend_Application_Bootstrap_Bootstrap->run() #4
 
D:_usersuser_name_web_devZendFrameworktutorial1publicindex.php(26): Z in D:_usersuser_name_web_devZendFrameworktutorial1libraryZendControllerDispatcherStandard.php on line 352 
Sobald ich den Klassennamen der Datei (./application/module/default/controllers/indexController.php) jedoch änderte, klappt der Aufruf auf einmal.

PHP-Code:
<?php

class Default_IndexController extends Zend_Controller_Action
{

    public function 
init()
    {
        
/* Initialize action controller here */
    
}

    public function 
indexAction()
    {
        
/* Blubber */
    
}


}
Daher nun meine Frage, habe ich etwas ausgelassen bei dem BasePath bzw. einer anderen Definition für den Default_Controller, was im Endeffekt in meinem oben genannten Fehler resultierte ?

Oder wurde es seit v. 1.9 einfach so verändert, dass man nun selbst der Klasse des Default Indexcontroller (Also allen Controllern) den Modulenamen vorran schreiben muss ?
dreamcatcher ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 26.04.2011, 08:21  
Erfahrener Benutzer
 
Registriert seit: 28.05.2008
Beiträge: 2.094
PHP-Kenntnisse:
Fortgeschritten
rudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nett
Standard

Schau doch nochmal in den Quickstart. Dort steht beschrieben, wie du dir mit der batch/shell-Datei genau diese Standard-Sachen anlegen kannst. Legt dir u.a. auch nen Index/Error-Controller an.

Zitat:
Sowohl in einem Tutorial-Video (Ging um ZF 1.9) und auch im Internet (http://www.zfforums.com/zend-framewo....html#post1402) steht dass man der Default Module Klasse kein Präfix anhängen muss.
=> nimm das Default_ ganz weg, brauchste ja nicht. Du sollstest drauf achten, dass dein Klassenname und der Dateiname auch bei Groß-/Kleinschreibung paßt (IndexController.php), sonst kann deine Seite auf einem *nix-System schnell brechen.

grüße


Basti
__________________
++++ Wieder einer ins Netz gegangen: Phishers Fritz zufrieden ++++
Blog
rudygotya ist offline   Mit Zitat antworten
Alt 26.04.2011, 09:02  
Erfahrener Benutzer
 
Registriert seit: 11.04.2011
Beiträge: 260
PHP-Kenntnisse:
Fortgeschritten
lcrash wird schon bald berühmt werden
Standard

Zend_Application_Module_Autoloader() macht nicht ganz das, was der Zend_Application-Resource-Loader für Module macht.

Ich würde _initAutoload() dringend empfehlen zu entfernen und stattdessen in deine Konfiguration folgendes einzufügen:

Code:
resources.modules[] = ""
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules
(controllerDirectory dabei nicht angeben)

Außerdem ich darauf zu achten ob ein „appnamespace” konfiguriert wurde: http://framework.zend.com/manual/1.1...ap.autoloading

Edit: auch recht interessant um Zend_Application + Autoloader zu verstehen: http://framework.zend.com/manual/1.1...ty.application

Geändert von lcrash (26.04.2011 um 09:06 Uhr).
lcrash ist offline   Mit Zitat antworten
Alt 26.04.2011, 10:54  
Erfahrener Benutzer
 
Benutzerbild von dreamcatcher
 
Registriert seit: 28.12.2010
Beiträge: 603
PHP-Kenntnisse:
Anfänger
dreamcatcher wird schon bald berühmt werden
Standard

Hatte es ausversehen im falschen Thread gepostet... bin wohl zu müde
Zitat:
Hallo Basti,

genau mit der von dir genannten Methode hatte ich die Modules erstellt.

Zitat:
zf.bat create modules default
Über den Quickstart habe ich ebend drüber geschaut, jedoch gibt es dort weder den Befehl "create modules" noch sieht die Ordnerstruktur am Ende ähnlich aus (Kein modules/ Ordner vorhanden im Quickstartprojekt, nur ein "normales" ZF Project).

(Sofern du dieses meintest : http://framework.zend.com/manual/de/...uickstart.html)

Nachdem ich mir noch einige Tutorials herausgesucht hatte im Internet stelle ich fest, dass es eigentlich nur an der application.ini liegen kann, da dort der Pfad für den Defaultwert eingetragen werden muss.

Dieser ist bei mir aber korrekt eingetragen:

PHP-Code:
includePaths.library APPLICATION_PATH "/../library"
bootstrap.path APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace "Application"
resources.frontController.params.prefixDefaultModule 1
resources
.frontController.moduleDirectory APPLICATION_PATH "/modules"
resources.frontController.params.displayExceptions 1
resources
.modules ""

;layout ressource
resources
.layout.layoutPath APPLICATION_PATH "/layouts/scripts/" 
und in der bootstrap.php (Hauptbootstrap im /application Verzeichnis:

PHP-Code:
    protected function _initAutoload(){
        
$modelLoader = new Zend_Application_Module_Autoloader(array(
                        
// Prefix of our Classes @Modules
                        
'namespace' => '',
                        
// Where to look for Classes on HDD
                        
'basePath' => APPLICATION_PATH.'/modules/default')); 
Ich möchte ja genau das machen was du geschrieben hast, das Default_ weglassen.

Davon handelt dieser Thread.
Leider geht dies nicht, da ich ohne Default_ immer die o.g. Fehlermeldung erhalte.
__________________________________________________ _____________________________________________

@lcrash
ich habe quasi beides, sprich es auch in meiner application.ini stehen.

Ein Namespace habe ich ebenfalls nicht definiert (Siehe Inhalt der application.ini eine Etage höher)

Ich mache nochmal ein gesamten Tutorial nachdem ich wieder aufgestanden bin... falls es dann immernoch den gleichen Fehler - und hier/per google - für mich keine Lösung gibt, dann uploade ich Dateien.

Sollte der Fehler behoben worden sein schreibe ich natürlich ebenfalls woran es lag und wie man es vermeiden kann.
dreamcatcher ist offline   Mit Zitat antworten
Alt 26.04.2011, 11:13  
Erfahrener Benutzer
 
Registriert seit: 11.04.2011
Beiträge: 260
PHP-Kenntnisse:
Fortgeschritten
lcrash wird schon bald berühmt werden
Standard

Zitat aus eigener Nachricht:
Zitat:
Falscher Thread was? Das _initAutload() weg und resources.modules[] = "" und es sollte klappen.

(resources.modules[]) deshalb, weil dem Resource Loader ein Array an Einstellungen übergeben werden muss (auch wenn er keine braucht/kennt)
Zitat:
Ein Namespace habe ich ebenfalls nicht definiert (Siehe Inhalt der application.ini eine Etage höher)
Doch hier -> appnamespace = "Application"

Edit:
Code:
resources.frontController.params.prefixDefaultModule = 1
ist offensichtlich dein Problem.
lcrash ist offline   Mit Zitat antworten
Alt 26.04.2011, 16:30  
Erfahrener Benutzer
 
Benutzerbild von dreamcatcher
 
Registriert seit: 28.12.2010
Beiträge: 603
PHP-Kenntnisse:
Anfänger
dreamcatcher wird schon bald berühmt werden
Standard

Da hat mich das Framework aber ausgetrickst

Nachdme man das erste Module hinzufügt, wird folgende Zeile automatisch von der Batch dazugeschrieben:

Zitat:
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.frontController.params.prefixDefaultModu le = "1"
Und du hast Recht gehabt, so bald folgende Direktive verschwindet:

PHP-Code:
resources.frontController.params.prefixDefaultModule "1" 
klappt alles wie es sollte

Eintausend Dank !

Geändert von dreamcatcher (26.04.2011 um 16:34 Uhr).
dreamcatcher ist offline   Mit Zitat antworten
Alt 10.05.2011, 02:05  
Erfahrener Benutzer
 
Benutzerbild von dreamcatcher
 
Registriert seit: 28.12.2010
Beiträge: 603
PHP-Kenntnisse:
Anfänger
dreamcatcher wird schon bald berühmt werden
Standard

Update:

Mann kann den gesamten AutoLoader weglassen, denn seit 1.1* gibt es die Möglichkeit auch per application.ini das Defaultmodule zu laden.

resources.frontController.defaultModule = "Guestbook"

Dank an:
http://updel.com/zend-framework-modular-application/
dreamcatcher ist offline   Mit Zitat antworten
Alt 08.07.2011, 15:58  
Benutzer
 
Registriert seit: 18.06.2009
Beiträge: 42
PHP-Kenntnisse:
Fortgeschritten
Leichti befindet sich auf einem aufstrebenden Ast
Standard

Ich habe genau das selbe Problem,
wenn ich in die .ini folgendes schreibe (aber auch wenns nicht da ist)
Zitat:
resources.frontController.defaultModule = "default"
Zitat:
Fatal error: Class 'Model_FileCrawler' not found in D:\Programme\xampp\htdocs\bergfuchs\application\mo dules\gallerie\controllers\IndexController.php on line 16
Und dort rufe ich eben
PHP-Code:
$crawler = new Model_FileCrawler($path); 
auf.

Wenn ich jetzt die bootstrap verändere und diesen Autoloader hinzufüge (wie oben schon)
PHP-Code:
    protected function _initAutoload()
    {        
        
// Standart load the default model!
        
$insideLoader = new Zend_Application_Module_Autoloader(array(
                                        
"namespace"    => "",
                                        
"basePath"    =>    APPLICATION_PATH."/modules/default/"));
            
        return 
$insideLoader;
    } 
Erhalte ich (durch das Aufrufen von new Model_FileCrawler) genau die Fehlermeldung von oben:
Zitat:
Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (error)' in ****
Ich habe jetzt irgendwie sämtliche Sachen, welche hier im Thread beschrieben sind versucht, aber nichts führt zu einem Erfolg. Hat jemand eine Idee? Noch ein Auszug aus der .ini
Zitat:
resources.modules = ""
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0
resources.frontController.params.prefixDefaultModu le = 1
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
Auch wenn ich
Zitat:
resources.frontController.params.prefixDefaultModu le = 1
weglasse oder mit
Zitat:
resources.frontController.defaultModule = "Guestbook"
ersetzte ändert sich auch nicht wirklich was.


Vielen dank für jede Hilfe

mfg
Leichti ist offline   Mit Zitat antworten
Alt 08.07.2011, 16:15  
Erfahrener Benutzer
 
Registriert seit: 11.04.2011
Beiträge: 260
PHP-Kenntnisse:
Fortgeschritten
lcrash wird schon bald berühmt werden
Standard

Code:
resources.frontController.defaultModule = "default" 
resources.frontController.params.prefixDefaultModule = 1
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.defaultModule = "Guestbook"
PHP-Code:
        // Standart load the default model!
        
$insideLoader = new Zend_Application_Module_Autoloader(array(
                                        
"namespace"    => "",
                                        
"basePath"    =>    APPLICATION_PATH."/modules/default/"));
            
        return 
$insideLoader
Alles weglassen.

Code:
resources.modules[] = ""
Mit den Klammern.

Pfad muss sein „application/modules/default/model/Foobar.php“ und Klasse „Model_Foobar“
lcrash ist offline   Mit Zitat antworten
Alt 08.07.2011, 17:06  
Benutzer
 
Registriert seit: 18.06.2009
Beiträge: 42
PHP-Kenntnisse:
Fortgeschritten
Leichti befindet sich auf einem aufstrebenden Ast
Standard

Hallo!
Vielen Dank schonmal für deine Hilfe!

Leider kommt nun folgende Fehlermeldung
Zitat:
atal error: Uncaught exception 'Zend_Application_Bootstrap_Exception' with message 'No default controller directory registered with front controller'
Wenn ich
Zitat:
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
wieder hinzufüge bin ich wieder beim altbekannten Problem.

mfg

edit:
Seltsamerweise funktioniert ein Model im Module "Gallerie" einwanderfrei (new Gallerie_Model_Model1), aber im default Module funktioniert nicht mal der Aufruf mittels Default_Model_Model1 - Fatal error: Class 'Default_Model_FileCrawler' not found in

Jemand Ideen?

Geändert von Leichti (08.07.2011 um 19:40 Uhr).
Leichti ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] mysql_query() mit SQLDump princemichi PHP Einsteiger 4 07.03.2011 22:33
Fehler bei CSV Import > MySQL fulltilt Datenbanken 8 20.08.2010 14:53
[Erledigt] Geschwindigkeitsprobleme mit großer normalisierter Datenmenge (Apache Logs franzcois Datenbanken 9 01.04.2010 13:33
brauche Hilfe bei Datenbankptimierung Danny Datenbanken 14 04.02.2010 17:23
SQL richtig umwandeln :( Sp1n PHP Tipps 2010 6 29.01.2010 11:35
SQL Query soll Dinge weg lassen MrDevil Datenbanken 3 02.09.2009 10:16
Zend Studio for Eclipse und Zend Framework KeKs0r PHP-Fortgeschrittene 5 15.12.2008 15:10
Normalisierung einer chaotischen Tabelle maeck Datenbanken 10 12.12.2006 18:17
Gute Struktur heohni Datenbanken 5 29.05.2006 11:42
default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP Timo Trallala Datenbanken 2 06.02.2006 11:39
[Erledigt] Bestell-Tabelle ok? PHP-Fortgeschrittene 4 28.11.2005 21:35
[Erledigt] Problem mit mySQL Datenbanken 7 27.09.2005 12:06
PHP-Fehlermeldung, weiss nicht mehr weiter PHP Tipps 2005-2 12 21.09.2005 12:56
mysql dump einspielen (ohne phpmyadmin) PHP Tipps 2005-2 6 18.06.2005 21:50
HILFE: Column count doesn't match value count at row 1 Datenbanken 17 12.06.2004 16:45

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
no default controller directory registered with front controller, zend framework set default module, zend modules, zend framework module, zend module path, fatal error: class default_model_ not found in, zend framework default module, fatal error: uncaught exception \'zend_controller_dispatcher_exception\' with message \'invalid controller class (\default_errorcontroller\)\', zend set default module application, zend framework default-modul model autoload, invalid controller class (\default_errorcontroller\), uncaught exception \'zend_controller_dispatcher_exception\' with message \'invalid controller class (\default_errorcontroller\)\', zend default_model, zend path to module controller, zend module, zend model pfad, zend module directory, fatal error: uncaught exception \'zend_application_bootstrap_exception\' with message \'no default controller directory registered with front controller\', zend not found class, zend framework basepath

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:49 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum