【问题标题】:dynamic controller in router zend framework 1.11路由器zend框架1.11中的动态控制器
【发布时间】:2012-09-08 22:49:47
【问题描述】:

路由中的多控制器如何工作? 我的路线:

$router->addRoute(
       'index',
       new Zend_Controller_Router_Route('/:lang/:@action',
           array(
                'lang' => 'en',
               'module' => 'default',
               'controller' => 'index',
               'action' => 'index'
           )
       )
    );

此路由适用于索引控制器,但不适用于身份验证控制器。 如何使用该路由和索引身份验证控制器?

我的菜单项:

$this->url(array('controller'=>'Auth','action'=>'index')

这个菜单项,不起作用。 我的完整函数_initRoutes()

protected function _initRoutes(){

    $frontController = Zend_Controller_Front::getInstance();
    $router = $frontController->getRouter();
    $router->removeDefaultRoutes();
    $router->addRoute(
            'fullRoute',
            new Zend_Controller_Router_Route('/:lang/:module/:controller/:action',
                    array('lang' => ':lang')
            )
    );
    $router->addRoute(
            'languageControllerAction',
            new Zend_Controller_Router_Route('/:lang/:controller/:action',
                    array('lang' => ':lang')
            )
    );

    $router->addRoute(
       'index',
       new Zend_Controller_Router_Route('/:lang/:@action',
           array(
                'lang' => 'en',
               'module' => 'default',
               'controller' => 'index',
               'action' => 'index'
           )
       )
    );

}

我需要控制器身份验证的路由。

【问题讨论】:

  • 你想要IndexController 的一条路由和AuthController 的第二条路由吗?

标签: zend-framework frameworks controller router


【解决方案1】:

1 号路线

这会将http://yoursite.com/auth 指向default 模块、AuthControllerindexAction

$router->addRoute(
       'auth',
       new Zend_Controller_Router_Route(
           'auth',
           array(
               'lang' => 'en',
               'module' => 'default',
               'controller' => 'auth',
               'action' => 'index'
           )
       )
);

2 号路线

这会将http://yoursite.com/ 指向default 模块、AuthControllerindexAction

$router->addRoute(
       'index',
       new Zend_Controller_Router_Route(
           '',
           array(
               'lang' => 'en',
               'module' => 'default',
               'controller' => 'auth',
               'action' => 'index'
           )
       )
);

【讨论】:

  • 现在可以工作了,但是。控制器索引 site.com/en// 的 url。如何在 url 中隐藏控制器名称?
  • 您好,请查看我的更新答案,并回复您原始问题下的评论。
  • 在Bootstrap中添加路由1和路由2时,所有链接重定向到site.com/
  • 我认为我们正在经历沟通不畅。如果你不回答我的直接问题,我帮不了你。
猜你喜欢
  • 1970-01-01
  • 2012-03-13
  • 1970-01-01
  • 2014-09-08
  • 1970-01-01
  • 1970-01-01
  • 2012-07-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多