Ergebnis 1 bis 10 von 10

Thema: frontController plugin nur für bestimme Module

  1. #1
    Benutzer
    Registriert seit
    14.04.2008
    Beiträge
    63
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard frontController plugin nur für bestimme Module

    Hallo,

    ich habe in meiner ZF_App ein FC-Plugin der bestimmte Layoutbereiche vorbereitet. Diese Bereiche existieren jedoch nur in einem Modul ( default ). Falls ein anderes Modul aufgerufen wird, so wird der Plugin auch ausgeführ obwohl er nicht benötigt wird.

    Kann man in der Konfigurationsdatei angeben, für welche Module der Plugin ausgeführt werden soll?

    Mittels
    Code:
    default.resources.frontController.plugins.MyPlug = "..."
    funktioniert es eben nicht.

    Eine Möglichkeit wäre es im Plugin selbt auf den Modulnamen zu prüfen... ich hätte ( falls möglich ) dies jedoch in meiner Konfigurationsdatei.

    mfG
    E:S

  2. #2
    Erfahrener Benutzer
    Registriert seit
    10.08.2007
    Beiträge
    822
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Alles, was in der Applicationskonfiguration angegeben wird, kann grundsätzlich nicht in Abhängigkeit zum Request stehen.
    Die Konfiguration wird für den Bootrapping-Prozess verwendet. Der ist aber schon längst vorbei, wenn die Request-Informationen vorliegen.

    Daher: Entweder direkt im Plugin prüfen oder ein zentrales Plugin verwenden, der je nach Request-Parameters die gewünschten Plugins registriert. Zu letzterem gab es auch schon einige Diskussion - mit Hilfe der Suche und "Plugin Manager" solltest du fündig werden.

  3. #3
    Benutzer
    Registriert seit
    14.04.2008
    Beiträge
    63
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Zitat Zitat von Mr.AndersoN Beitrag anzeigen
    Alles, was in der Applicationskonfiguration angegeben wird, kann grundsätzlich nicht in Abhängigkeit zum Request stehen.
    Die Konfiguration wird für den Bootrapping-Prozess verwendet. Der ist aber schon längst vorbei, wenn die Request-Informationen vorliegen.

    Daher: Entweder direkt im Plugin prüfen oder ein zentrales Plugin verwenden, der je nach Request-Parameters die gewünschten Plugins registriert. Zu letzterem gab es auch schon einige Diskussion - mit Hilfe der Suche und "Plugin Manager" solltest du fündig werden.
    Welch eine schöne und einfache Erklärung. Vielen Dank! Habe mir den Thread mit der Plugin-Manager-Klasse angesehen.. .da ich nur 2 Plugins habe, sehe ich kein Nutzen diesen Manager einzusetzen.

    Nochmals - Danke!

    mfG
    E:S

  4. #4
    Benutzer
    Registriert seit
    05.02.2010
    Beiträge
    31
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Hi, hätte dazu noch eine Frage: Wie bekomme ich ZF dazu ein zentrales Plugin zu laden welches in /application/plugins abgelegt ist ? Und wie bekomme ich das zentrale plugin dazu plugins aus einem modul zu laden ? Vielen dank im Vorraus.

  5. #5
    Erfahrener Benutzer
    Registriert seit
    10.09.2007
    Ort
    Wuppertal
    Beiträge
    5.725
    Thanks
    1
    Thanked 39 Times in 39 Posts

    Standard

    Mit ZF 1.10 könntest du einen in der application.ini einen "appnamespace" festlegen und das Plugin per APPNAME_Plugin_MyPlugin laden lassen. Dazu registrierst du es an den FrontController mittels
    Code:
    resource.frontController.plugins.MyPlugin = "APPNAME_Plugin_MyPlugin"
    So hab ich es zumindest verstanden für 1.10, habe es aber noch nicht getestet.
    Neues Projekt: zandman.de - Status: WIP




  6. #6
    Benutzer
    Registriert seit
    05.02.2010
    Beiträge
    31
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Genial ! So funktionierts :-) ... Mensch das hat mich einen halben Tag nerven gekostet. Vielen Dank.

  7. #7
    Benutzer
    Registriert seit
    05.02.2010
    Beiträge
    31
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Es funktioniert auch wenn man appnamespace = "" leer lässt. Zuvor hatte ich hier einen Dummy Text drin den mir wohl die zf.bat reingeschrieben hat.

    Für was ist dieser Namespace gedacht ? Soll er auf alle Klassennamen der Applikation einschliesslich der Module als Prefix übertragen werden ?

  8. #8
    Benutzer
    Registriert seit
    14.04.2008
    Beiträge
    63
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Zitat Zitat von slartibartfast Beitrag anzeigen
    Für was ist dieser Namespace gedacht ? Soll er auf alle Klassennamen der Applikation einschliesslich der Module als Prefix übertragen werden ?
    So zu sagen - ja... http://de.wikipedia.org/wiki/Namensraum

    mfG
    E:S

  9. #9
    Benutzer
    Registriert seit
    05.02.2010
    Beiträge
    31
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Das heisst ich nenne meine Plugins "Appname_Plugin_Pluginname" meine Controller in den Modulen "Appname_Modulname_ControllernameController" und meine Models "Appname_Modulname_Model_Modelname" ? Die Bezeichnng der Controller ist dabei nicht ganz durchgängig ..

  10. #10
    Benutzer
    Registriert seit
    14.04.2008
    Beiträge
    63
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Zitat Zitat von slartibartfast Beitrag anzeigen
    Das heisst ich nenne meine Plugins "Appname_Plugin_Pluginname" meine Controller in den Modulen "Appname_Modulname_ControllernameController" und meine Models "Appname_Modulname_Model_Modelname" ? Die Bezeichnng der Controller ist dabei nicht ganz durchgängig ..
    Du wirst doch in deiner Bootstrapdatei etwas ähnliches haben..

    PHP-Code:
    protected function _initAutoload()
        {
            
    $autoloader = new Zend_Application_Module_Autoloader(array(
                
    'namespace' => '',
                
    'basePath'  => APPLICATION_PATH));
            return 
    $autoloader;
        } 

    Beachte die 4te Zeile mit 'namespace' => '' << hier wird kein Namespace bzw. ein leeres Namespace verwendet und daher reicht bei den default Controllern einfaches "ControllernameController". Falls du beim 'namespace' etwas anderes eingestellt hast, so muss die Klasse diesen Präfix auch tragen.

    Mittels autoloaderNamespaces.MyNameSpace = "MyNameSpace_" in der application.ini wird automatisch ein weiteres Namespace zB für Plugins, welche in verschiedenen Projekten verwendet werden ( Refactoring ) registriert. Die Dateien sollten dann unter "library" ( oder passend zum includePath ) abgelegt werden.

    mfG
    E:S

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 23.10.2009, 18:29
  2. aus Module ein Model über Plugin laden
    Von der_meier_hans im Forum MVC
    Antworten: 3
    Letzter Beitrag: 13.07.2009, 15:59
  3. FrontController-Plugin zur dyn. Erstellung von Layout-Variablen
    Von Born4Destruction im Forum Einsteigerfragen
    Antworten: 25
    Letzter Beitrag: 13.04.2009, 17:39
  4. "Content-Module" als Plugin oder als Modul?
    Von rene.klatt im Forum Einsteigerfragen
    Antworten: 3
    Letzter Beitrag: 03.09.2008, 17:05
  5. Navigation für alle Module (per Plugin)
    Von Sagattarii im Forum Einsteigerfragen
    Antworten: 3
    Letzter Beitrag: 02.07.2008, 13:51

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •