ZF路由问题

时间:2009-08-13 18:16:39

标签: php zend-framework

我刚开始使用zend framework 1.9.1进行冒险,但我遇到了一些问题。我想删除默认路由以避免在不同的URL上显示相同的内容 - 为了实现我在bootstraper中编写自定义函数

<?php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initMyRouter()
    {
        $this->bootstrap('router')
             ->getContainer()
             ->frontcontroller
             ->getRouter()
             ->removeDefaultRoutes();
    }
}

但在此之后,出现了一个问题 - 每个无效的URL都到达默认控制器而不是错误控制器。我解决了这个问题 resources.frontController.defaultcontrollername =“error” resources.frontController.defaultaction =“throw” 在application.ini和

public function throwAction()
{
    throw new Zend_Controller_Dispatcher_Exception;
}
在ErrorController中

解决这个问题,但我的问题是......我做错了吗?

第二个问题是我只需要生成绝对URL,所以我在application.ini中添加了resources.frontController.baseurl =“http://mydomain.com/”,但之后每个URL都指向默认控制器。如何解决?

第三个(也是最后一个)是......如何在我的行动中调用Zend_Controller_Action_Helper_Url :: url?我试过像$ this-&gt; _helper-&gt; url(array(),'frontpage')之类的东西,但它调用了Zend_Controller_Action_Helper_Url :: direct

1 个答案:

答案 0 :(得分:1)

我会先回答第三个问题,因为我可以告诉你最重要的事情。

我通常使用$this->view->url(array(...), 'routeName', true);最后一个参数重置参数。我发现视图助手比Action Helper更容易/更快地输入。虽然我认为$this->_helper->url->url(...)是获取动作助手的正确方法。

我从未删除默认路线 - 但如果当天晚些时候没有任何其他答案 - 我会尽力在下班后为您做一些测试。