2013-12-17 5 views
0

У меня есть следующая структура на мое приложение:Route sudmains контроллер с Zend

модули =>

  default => site.com 
      blog => blog.site.com 
      admin => admin.site.com 

Я использовал этот код на моем загрузчике, чтобы поддомены и перенаправлять на модуль наблюдения:

$pathRoute = new Zend_Controller_Router_Route(':controller/:action/*', array('controller' => 'index', 'action' => 'index')); 

    $frontController = Zend_Controller_Front::getInstance(); 
    $router = $frontController->getRouter(); 



    $blogDomainRoute = new Zend_Controller_Router_Route_Hostname(
      'blog.site.com', array(
     'module' => 'blog', 
     'controller' => 'index', 
     'action' => 'index' 
    )); 

    $router->addRoute('blogdomain', $blogDomainRoute->chain($pathRoute)); 

И тот же код для adminDomainRoute.

Он отлично работает! Но теперь я заметил, что мой пагинация маршрут не работает, я имею последующий маршрут для управления страницы в модуле администратора:

routes.usuarios.route = /usuarios/pagina/:pagina 
routes.usuarios.defaults.module = admin 
routes.usuarios.defaults.controller = usuarios 
routes.usuarios.defaults.action = index 
routes.usuarios.defaults.pagina = 1 

Я попытался изменить маршрут

routes.usuarios.route = admin.site.com/usuarios/pagina/:pagina 

Но я все еще есть действий не найдено:

массив ( 'контроллер' => 'Юзеров', 'действие' => 'Pagina', 'модуль' => 'администратор', )

Как я могу маршрутизировать admin.site.com/usuarios/pagina/1 admin.site.com/usuarios/pagina/3?

ответ

1

Вещь, которая прыгает у меня из вашей установки, заключается в том, что в формате ini (ваш текущий маршрут администратора) используется маршрутизатор по умолчанию. Ну этот маршрутизатор не знает ничего о имени хоста вы находитесь, поэтому он ищет URL, как этот:

site.com/admin.site.com/usuarios/pagina/1 admin.site.com/usuarios/pagina/3 

То, что вы хотите что-то вроде этого:

//Create a hostname route. This route is only concerned with the subdomain part of the uri 
$hostnameRoute = new Zend_Controller_Router_Route_Hostname(
    'admin.:host.:domain'); 
//Create a default router that would take care of the rest of the routing. 
$defaultRoute = new Zend_Controller_Router_Route(
    '/usuarios/pagina/:pagina', 
    array(
     'module'=>'admin', 
     'controller'=>'usuarios', 
     'action'=>'index' 
    ) 
); 
//Chain those two routes together to make them go one after the other. 
$defaultRoute=$hostnameRoute->chain($defaultRoute); 

Этот код может нужно немного настроить, но я думаю, что это должно делать то, что вам нужно.

+0

Спасибо! Работал очень красиво, каждый маршрут субдомена мне нужно было создать так, верно? – wiLLiamcastrO

+0

Существует не быстрый способ сделать это. Это можно сделать с помощью настраиваемого класса маршрутизации. –