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);
?>
答案 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);
}