2010-11-24 5 views
0

hi Как расширить класс контроллера из другого класса контроллера внутри модуля? , например: у меня есть модуль по умолчанию и контроллер по умолчаниюController Я хочу расширить контроллер по умолчанию в 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
+ -модулями
+ - передний
+ --- Контроллеры
+ - Видом
+ ---- хелперы
+ ---- сценарии
+ ----- индекс
+ - пользователь
+ --- Контроллеры
+ --- вид
+ ---- хелперы
+ ---- Сценарии
+ ----- индекс
+ библиотека
+ общественный

применение/конфиги/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'); 
    } 
} 
Смежные вопросы