2010-11-24 2 views
0

salut comment étendre une classe de contrôleur d'une autre classe de contrôleur à l'intérieur d'un module? par exemple: j'ai un module par défaut et un contrôleur defaultController Je veux étendre le contrôleur par défaut dans userController qui est dans le module utilisateur? Je reçois une erreur fatale en essayant de le faireétendre contrôleur dans zend contrôleur

Répondre

2

Pour une fonctionnalité réutilisable contrôleur, vous devez soit utiliser une classe parente commune pour les deux contrôleurs, extension à la place un contrôleur par un autre, ou vous devez utiliser l'action-aides .

+0

les fonctionnalités communes sont dans le contrôleur par défaut et il est dans le module par défaut. Je veux obtenir ce contrôleur par défaut dans tous les autres contrôleurs de module. J'ai essayé avec l'aide d'action mais je ne peux pas obtenir l'objet Zend_Controller_Request_Abstract dans l'aide d'action. J'essaie de mettre en œuvre la solution décrite dans http://stackoverflow.com/questions/ – guny

+0

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

+0

583636/modulaire-web-site-avec-zend-framework-pile-de-actions .. mais j'ai une structure modulaire ... ainsi que mention dans le lien donné j'ai un contrôleur de base dans le module par défaut qui ne peut pas être capable étendre à un autre contrôleur. Y a-t-il une meilleure solution pour cette situation? – guny

2

Essayez de regarder aussi cet exemple

Ma struckture

+ applications +
-configs
+ -modules
+ - avant
+ --- + contrôleurs
- -Vue
+ ---- + aides
---- scripts
d'index + ----- +
- utilisateur
+ --- + contrôleurs
--- vues
+ ---- + aides
---- scripts
index + ----- +
bibliothèque
+ publique

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 
{ 


} 

applications /modules/avant/régulateurs/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'); 
    } 
} 

applications /modules/user/régulateurs/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

ma User_IndexController de classe de classe d'utilisateur étend Default_IndexController { public function init() { /* Initialiser contrôleur d'action ici */ } de indexAction fonction publique() { // corps d'action // \t si ($ this-> getRequest() -> isPost()) // \t \t {// \t \t \t $ this-> view-> name = $ _POST [ 'nom d'utilisateur']; // \t \t}} classe Default_IndexController extends Zend_Controller_Action {}} – guny

Questions connexes