2010-11-24 8 views
0

hi Wie kann man eine Controller-Klasse von einer anderen Controller-Klasse innerhalb eines Moduls erweitern? für zB: ich habe ein Modul Standard und einen Controller defaultController Ich möchte den Standard-Controller in userController, die in Benutzermodul ist? ich bin immer einen fatalen Fehler, wenn dieseextend controller in zend Controller

Antwort

2

Für wiederverwendbare Controller-Funktionalität zu tun versuchen, entweder sollten Sie beide Controller eine gemeinsame übergeordnete Klasse für verwenden, anstatt einen Controller durch einen anderen erstreckt, oder Sie sollten aktions Helfer verwenden .

+0

Die gemeinsamen Funktionen sind im Standard-Controller und es ist in Modul-Standard. Ich möchte diese Standard-Controller in allen anderen Modul-Controllern erhalten. Ich habe versucht, mit Aktion Helfer, aber ich kann nicht Zend_Controller_Request_Abstract Objekt in der Aktion Helfer. – guny

+0

http://stackoverflow.com/questions/583636/modular-web-site-with-zend-framework-stack-of-actions – guny

+0

Ich versuche, die in http://stackoverflow.com/questions/ beschriebenen Lösung zu implementieren 583636/modular-web-site-mit-zend-framework-stack-of-aktionen .. aber ich habe eine modulare Struktur ... so wie in der angegebenen Link erwähnt habe ich einen Basis-Controller im Standard-Modul, die nicht in der Lage sein auf andere Controller erweitern. Gibt es eine bessere Lösung für diese Situation? – guny

2

Versuchen Sie sehen auch bei diesem Beispiel

Meine Auswahl struckture

+ -Anwendung
+ -configs
+ -Module
+ - Front
+ --- Controller
+ - -Ansichten
+ ---- Helfer
+ ---- Skripte
+ ----- Index
+ - Benutzer --- Controller
+ --- Ansichten
+ ---- Helfer
+ ---- Skripte
+ ----- Index
+ Bibliothek
+ public

application/configs/application.ini

[production] 
Autoloadernamespaces[] = "Zend_" 
Autoloadernamespaces[] = "My_" 

phpSettings.display_startup_errors = 0 
phpSettings.display_errors = 0 

includePaths.library = APPLICATION_PATH "/../library" 
bootstrap.path = APPLICATION_PATH "/Bootstrap.php" 

bootstrap.class = "Bootstrap" 
appnamespace = "Application" 

resources.modules[] = '' 
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" 
resources.frontController.moduleControllerDirectoryName = "controllers" 
resources.frontController.defaultModule = "front" 
resources.frontController.throwErrors = false 

resources.router.routes.default.route = ":module/:controller/:action/*" 
resources.router.routes.default.defaults.module = front 
resources.router.routes.default.defaults.controller = index 
resources.router.routes.default.defaults.action = index 

[staging : production] 

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

[development : production] 
phpSettings.display_startup_errors = 1 
phpSettings.display_errors = 1 
resources.frontController.params.displayExceptions = 1 

application/bootstr ap.php

<?php 

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap 
{ 


} 

application/modules/vorne/Controller/IndexController.php

<?php 
/** 
* IndexController 
* 
* @author 
* @version 
*/ 
require_once 'Zend/Controller/Action.php'; 
class IndexController extends My_Controller_Action_Abstract 
{ 
    /** 
    * The default action - show the home page 
    */ 
    public function indexAction() 
    { 
     echo('Front Controller'); 
    } 
} 

application/modules/user/Controller/IndexController.php

<?php 
/** 
* IndexController 
* 
* @author 
* @version 
*/ 
require_once 'Zend/Controller/Action.php'; 
class User_IndexController extends My_Controller_Action_Abstract 
{ 
    /** 
    * The default action - show the home page 
    */ 
    public function indexAction() 
    { 
     echo('User Controller'); 
    } 
} 
+0

meine Benutzerklasse Klasse User_IndexController Default_IndexController { öffentliche Funktion erweitert init() { /* Initialisieren Regler hier */ } public function index() { // Aktion Körper // \t if ($ this-> getRequest() -> isPost()) // \t \t { // \t \t \t $ this-> view-> name = $ _ POST [ 'username']; // \t \t} } Klasse Default_IndexController erweitert Zend_Controller_Action {} } – guny

Verwandte Themen