我刚开始使用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
答案 0 :(得分:1)
我会先回答第三个问题,因为我可以告诉你最重要的事情。
我通常使用$this->view->url(array(...), 'routeName', true);
最后一个参数重置参数。我发现视图助手比Action Helper更容易/更快地输入。虽然我认为$this->_helper->url->url(...)
是获取动作助手的正确方法。
我从未删除默认路线 - 但如果当天晚些时候没有任何其他答案 - 我会尽力在下班后为您做一些测试。