Zend框架:为主页创建路线

时间:2012-05-10 10:42:09

标签: zend-framework

我正在使用Zend Framework编写应用程序,它使用数据库驱动的路由。

我已禁用默认路由,但这似乎在访问主页时导致错误。

有人能告诉我如何'重新创建'默认路由,这会将访问主页'/'的用户带到索引控制器的索引操作吗?

EDIT @RockyFord,根据你的回答,我添加了以下内容:

if($this->_frontController->getRequest()->getRequestUri() == '/') {
    $route= new Zend_Controller_Router_Route(
        '*',
        array('controller'  => 'index',
              'action'      => 'index')
    );
    $router->addRoute('default', $route);
)

但是正如您所看到的,我必须测试我们是否使用网址在主页上。任何人都可以提出更好的方法吗?

我不能使用这种规则,因为路由声明中的正斜杠被剥离了:

$route = new Zend_Controller_Router_Route_Static('/', array(
    'module' => 'default',
    'controller' => 'index',
    'action' => 'index'
));
$router->addRoute('homepage', $route);

取自Zend_Controller_Router_Route_Static:

public function __construct($route, $defaults = array())
{
    $this->_route = trim($route, self::URI_DELIMITER);
    $this->_defaults = (array) $defaults;
}

2 个答案:

答案 0 :(得分:1)

从手册:

  

路由定义可以包含一个特殊字符 - 通配符 -   用'*'符号表示。它用于类似地收集参数   到默认的模块路由(var => URI中定义的值对)。   以下路由或多或少模仿Module路由行为:

$route = new Zend_Controller_Router_Route(
    ':module/:controller/:action/*',
    array('module' => 'default')
);
$router->addRoute('default', $route);
如果您对代码感兴趣,

Zend_Controller_Router_Route_Module会有路线的实际定义。

[编辑] 也许:

//not sure if the name will work or not, might need empty string?
$route = new Zend_Controller_Router_Route_Static(
    '/',
    array('controller' => 'index', 'action' => 'index')
);
//also might need a better name like 'home'
$router->addRoute('/', $route);

答案 1 :(得分:1)

主页路线就是:

$route = new Zend_Controller_Router_Route_Static('/', array(
    'module' => 'default',
    'controller' => 'index',
    'action' => 'index'
));
$router->addRoute('homepage', $route);

使用您希望请求转到的控制器和操作替换默认/索引/索引值。