这条路线有什么问题?

时间:2009-09-29 22:34:12

标签: php zend-framework

protected function _initRoutes()
{
    $this->router = $this->frontController->getRouter();
    $route = new Zend_Controller_Router_Route(
        ':username',
        array(
            'module'     => 'default',
            'controller' => 'view',
            'action'     => 'profile',
            'username'   => ':username'
        )
    );
    $this->router->addRoute('profile', $route);
}

它应该做的是匹配这个:

http://www.mydomain.com/something

要:

http://www.mydomain.com/view/profile/username/something

哪个有效。麻烦的是我去的时候:

http://www.mydomain.com

我得到一个很长的数据库错误,基本上是因为它匹配(并且它不应该):

http://www.mydomain.com/view/profile

但没有用户名,这是必需的。

路由在我的bootstrap文件中定义。我该怎么做才能让它正常工作?

编辑:

似乎问题在于我的视图中的url帮助器。这些网址有什么问题?

<?php

echo $this->url(array('module' => 'default',
                      'controller' => 'view',
                      'action' => 'profile',
                      'id' => $this->escape($m->id)),
                null,
                true);

                ?>

或者:

<?php

echo $this->url(array('module' => 'default',
                      'controller' => 'my-account',
                      'action' => 'write-message'),
                null,
                true);

            ?>

1 个答案:

答案 0 :(得分:2)

该行

'username'   => ':username'

这意味着您将参数用户名默认值设置为字符串':username',如果您将其保留在路径def之外,如果没有用户名,它将忽略此路线并继续前进。

protected function _initRoutes()
{
    $this->router = $this->frontController->getRouter();
    $route = new Zend_Controller_Router_Route(
        ':username',
        array(
            'module'     => 'default',
            'controller' => 'view',
            'action'     => 'profile',
        )
    );
    $this->router->addRoute('profile', $route);
}