2010-11-24 93 views
0

hi 如何從模塊內的另一個控制器類擴展控制器類? 例如:我有一個模塊的默認和一個控制器defaultController 我想擴展在用戶模塊userController中的默認控制器? 我得到試圖做到這一點在zend中擴展控制器控制器

回答

2

對於可重複使用的控制器功能,您應該使用一個共同的父類控制器,而不是由另一個延伸的一個控制器,或者你應該使用動作助手當一個致命錯誤。

+0

常用功能在默認控制器中,並且在模塊默認情況下。我想在所有其他模塊控制器中獲得這些默認控制器。我嘗試過動作助手,但我無法獲得動作助手中的Zend_Controller_Request_Abstract對象。 – guny 2010-11-24 11:59:23

+0

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

2

試得看看下面這個例子

我的目錄struckture

+應用
+ -configs
+ - 模塊
+ - 前
+ ---控制器
+ - -views
+ ----幫手
+ ----腳本
+ -----索引
+ - 用戶
個 + ---控制器
+ ---看法
+ ----助手
+ ----腳本
+ -----指數
+庫
+公共

應用/ 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 

應用/ bootstr ap.php

<?php 

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap 
{ 


} 

應用/模塊/前/控制器/ 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'); 
    } 
} 

應用/模塊/用戶/控制器/ 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'); 
    } 
}