Zend:URL视图助手组装的URL不正确

时间:2011-11-18 15:04:01

标签: php zend-framework zend-route

I have a problem using my url view helper. I have defined custom routes like so: 
; Index
routes.domain.type = 'Zend_Controller_Router_Route_Static'
routes.domain.route = '/'
routes.domain.defaults.controller = index
routes.domain.defaults.action = index

自定义网址的一切正常,但我无法正常组合。 我尝试使用视图中的以下代码添加链接:

$this->url(array('controller' => 'search', 'action' => 'index');

问题是当我在索引控制器的索引页面中使用此代码时,返回的url是当前控制器/操作的url,而不是我需要的url。

2 个答案:

答案 0 :(得分:5)

这是因为URL视图助手选择了最后一个活动路由。如果您有多条路线,请始终定义您正在使用的路线:

$this->url(array('controller' => 'search', 'action' => 'index'), 'default');

第二个参数是要使用的路径,第三个可选参数是所有参数是否需要重置(真/假)。

答案 1 :(得分:1)

为此,您需要设置反向路线图,如解释here

生成URL的最佳推荐方法是使用您自己的自定义URL视图助手。

class My_View_Helper_FullUrl extends Zend_View_Helper_Abstract {

public function fullUrl($url) {
    $request = Zend_Controller_Front::getInstance()->getRequest();
    $url = $request->getScheme() . "://" . $request->getHttpHost(). "/" . $url;
    return $url;
  }
}

因此,要生成网址,您只需致电

$this->fullUrl('search');

将输出,

  

www.example.com/search