我的应用程序上有以下结构:
Modules =>
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
但我仍然没有找到行动:
阵列( 'controller'=> 'USUARIOS', 'action'=> 'pagina', 'module'=> “管理员”, )
如何路由admin.site.com/usuarios/pagina/1 admin.site.com/usuarios/pagina/3?
答案 0 :(得分:1)
从您的设置中跳出来的是,在ini
格式(您当前的管理路由)中,您正在使用默认路由器。那么这个路由器知道没有关于你所在的主机名,所以它正在寻找这样的网址:
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);
这段代码可能需要一些调整,但我认为这应该做你需要的。