У меня есть этот код:Добавить маршрутизатор модулей в Zend
$defaultAdmin = array ('module' => 'admin', 'controller' => 'index', 'action' => 'index');
$routeAdmin = new Zend_Controller_Router_Route ('admin/:controller/:action/*', $defaultAdmin);
$router->addRoute ('admin', $routeAdmin);
Однако, если я вхожу в этот адрес:/администратор/это загрузить контроллер на /application/controllers/IndexController.php вместо одного в /application/modules/admin/controllers/IndexController.php
Мои полные самозагрузки эта один:
abstract class My_Application_Bootstrap extends Zend_Application_Bootstrap_Bootstrap {
/**
* Inicializa las características generales de la aplicación
*
* @param $application Zend_Application|Zend_Application_Bootstrap_Bootstrapper
* @return void
*/
public function __construct($application) {
parent::__construct ($application);
$autoloader = $application->getAutoloader();
$autoloader->registerNamespace ('Busca');
$this->_initConfig();
$this->_initDb();
$this->_initView();
$this->_setCache();
$this->_setRouter();
$this->_setHelpers();
$this->_init();
}
/**
* Método que setea el cache del sistema
*
* @return My_Application_Bootstrap
*/
protected function _setCache() {
$config = Zend_Registry::get ('config');
$metadataBack = $config->metadata_cache->frontend->toArray();
$metadataFront = $config->metadata_cache->backend->toArray();
$memcachedOpts = $config->db_cache->toArray();
$memcache = new My_Cache_Backend_Memcached ($memcachedOpts);
$metadataCache = Zend_Cache::factory ('Core', 'File', $metadataBack, $metadataFront);
Zend_Registry::set ('Cache', $memcache);
Zend_Registry::set ('MetadaCache', $metadataCache);
My_Model_Table_Abstract::setDefaultMetadataCache ('MetadaCache');
return $this;
}
/**
* Inicializa la configuración de la aplicación
*
* @return My_Application_Bootstrap
*/
protected function _initConfig() {
Zend_Registry::set ('config', new Zend_Config ($this->getOptions()));
return $this;
}
/**
* Inicializa la(s) base(s) de datos
*
* @return My_Application_Bootstrap
*/
protected function _initDb() {
$this->bootstrap ('multidb');
$resource = $this->getPluginResource ('multidb');
$databases = Zend_Registry::get ('config')->resources->multidb;
foreach ($databases as $name => $adapter) {
$db_adapter = $resource->getDb ($name);
Zend_Registry::set ($name, $db_adapter);
}
return $this;
}
/**
* Reemplaza la vista Zend_View por My_View
*
* @return My_Application_Bootstrap
*/
protected function _initView() {
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper ('viewRenderer');
$view = new My_View();
$viewRenderer->setView ($view);
return $this;
}
/**
* Método que setea el router general del sitio
* Todas las peticiones irán al controlador default, con excepción de las de
* administración.
*
* @return My_Application_Bootstrap
*/
protected function _setRouter() {
$front = Zend_Controller_Front::getInstance();
$router = $front->getRouter();
/*
* Router para entidades
*/
$defaultSection = array ('module' => 'default', 'controller' => 'index', 'action' => 'section', 'sectionAction' => null, 'section' => null, 'id' => null, 'title' => null);
$requiredSection = array ('id' => '\d+');
$routeSection = new Zend_Controller_Router_Route (':section/:sectionAction/:id/:title/*', $defaultSection, $requiredSection);
$router->addRoute ('section', $routeSection);
/*
* Router para entidades sin ID
*/
$defaultSection = array ('module' => 'default', 'controller' => 'index', 'action' => 'section', 'sectionAction' => null, 'section' => null);
$routeSection = new Zend_Controller_Router_Route (':section/:sectionAction/*', $defaultSection, $requiredSection);
$router->addRoute ('section', $routeSection);
/*
* Router para listados
*/
$defaultList = array ('module' => 'default', 'controller' => 'index', 'action' => 'list', 'section' => null);
$routeList = new Zend_Controller_Router_Route (':section/listar/*', $defaultList);
$router->addRoute ('listados', $routeList);
/*
* Router para administración
*/
$defaultAdmin = array ('module' => 'admin', 'controller' => 'index', 'action' => 'index');
$routeAdmin = new Zend_Controller_Router_Route ('admin/:controller/:action/*', $defaultAdmin);
$router->addRoute ('admin', $routeAdmin);
return $this;
}
/**
* Configuración de los helpers del sistema
*
* @return My_Application_Bootstrap
*/
protected function _setHelpers() {
$prefix = 'My_Controller_Action_Helpers';
Zend_Controller_Action_HelperBroker::addPrefix ($prefix);
Zend_Controller_Action_HelperBroker::addPath (APPLICATION_PATH . '/controllers/helpers', 'My_Controller_Action_Helper');
return $this;
}
/**
* Para usar en los hijos en vez del constructor
*/
protected function _init() {
}
}
Вы создали новый контроллер администратора и действие администратора? Вы можете проверить его в .zfproject.xml. –
@JA: Присутствие или отсутствие чего-либо в '.zfproject.xml' ничего не значит – zerkms
@JA Если я установил модуль как администратор и контроллер для индексации, а действие для индексации в параметрах по умолчанию в маршрутизаторе, то оно должно указывать на /application/modules/admin/controller/IndexController.php и вызовите метод indexAction, поэтому мне не нужно создавать AdminController.php с помощью adminAction. Тем не менее, это точно моя проблема ... это не работает таким образом ... – Cito