2014-01-22 2 views
2

У меня есть 1 Зенд (v1) приложения, и 2 модуля: по умолчанию + админКак настроить маршрутизатор для нити поиска модуля в рамках ZEND

Я хочу, когда модуль вызова по умолчанию будет установлен маршрутизатор в configs/router/default.ini и если в модуле админ не любая вещь

Я попытался использовать плагин, но он не работает

в мой плагин

class Australian_Controller_Plugin_DefaultRouter extends Zend_Controller_Plugin_Abstract { 

    public function routeShutdown(Zend_Controller_Request_Abstract $request) { 
     $currModule = $request->getModuleName(); 
     if ($currModule != 'default') { 
      return; 
     } 
     $fontController = Zend_Controller_Front::getInstance(); 
     $router1 = new Zend_Controller_Router_Rewrite(); 
     $fontController->getRouter()->removeDefaultRoutes(); 
     $myRoutes = new Zend_Config_Ini(APPLICATION_PATH . '/configs/router/default.ini', 'production'); 
     $router1->addConfig($myRoutes, 'routes'); 
     $fontController->setRouter($router1); 

    } 

} 

и /default/Bootstrap.php

protected function _initRoutes() { 

    $fontController = Zend_Controller_Front::getInstance(); 
    $fontController->registerPlugin(new Australian_Controller_Plugin_DefaultRouter()); 

} 

благодаря

ответ

0

Обратите внимание, что вы добавляете новый маршрутизатор после маршрутизации так Zend уже декодированного адрес, используя старые маршруты. Таким образом, вы можете создавать URL-адреса, используя новые маршруты, но они не будут распознаны Zend. Вам нужно снова позвонить $router->route($request);, чтобы установить модуль/контроллер/действие, используя новый набор маршрутов. К сожалению, это не работает, когда его вызывается в routeShutdown и его необходимо добавить в preDispatch(). К сожалению, я слишком новичок в Zend и до сих пор не понимаю, почему это так.

Код я использовал:

$fontController = Zend_Controller_Front::getInstance(); 
$router = $fontController->getRouter(); 
$r = new Zend_Controller_Router_Route(
       '/testnew', 
       array(
        'module' => 'user', 
        'controller' => 'index', 
        'action' => 'myaccount', 
     )); 
$router->addRoute('testnew', $r); 
$router->route($request); 
+0

Я уже успех, слава Вольвокса очень – khavq

Смежные вопросы