带有URL映射的Zend Framework问题

时间:2009-01-05 14:11:48

标签: php zend-framework

我正在尝试将操作映射到基本URL和默认控制器。

发誓这应该是直接的,甚至是“开箱即用”功能,但是如何使用Zend Framework将默认控制器中的操作映射到基本URL?我对框架很新,所以我希望我只是遗漏了一些明显的东西。

尝试映射:

domain.com/index/my-page到domain.com/my-page

默认不破坏任何其他路线设置。

我可以使用Zend_Router来破解它,但它打破了其他规则,例如/:controller /:action /:module /:controller /:action

注意:/ index / my-page是一个示例url - 我需要它动态地为所有indexController动作工作。

'tharkun'要求的网址映射示例 indexController有方法indexAction和contactAction 需要网址

/index
/index/contact
/
/contact

第二个控制器testController有方法indexAction和monkeyAction 需要网址

/test
/test/index
/test/monkey

基本上 - 如果sys找不到VAR的控制器,那么它会在默认控制器中查找VAR的动作

1 个答案:

答案 0 :(得分:2)

默认控制器是IndexController。

(默认)映射的工作原理如下:

/ => IndexController::indexAction
/index => IndexController::indexAction
/index/foo => indexController::fooAction
/foo => FooController::indexAction

因此,添加这样的用户定义路由(优先级低于默认值)

$frontController = Zend_Controller_Front::getInstance();
$router = $frontController->getRouter();
$route = new Zend_Controller_Router_Route(
    '/:action',
    array(
        'controller' => 'index'
    )
);
$router->addRoute('user', $route);

这并没有打破我对默认路线的使用。

编辑:正如coffeerings在评论中所说,这将打破非默认控制器的indexAction。