2011-11-18 65 views
2
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 

一切工作正常与自定义的网址,但我无法组装正常没有。 我尝试使用下面的代码从视图中添加链接:Zend:由URL视图助手组装的网址不正确

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

的问题是,当我使用索引控制器的我的索引页的代码,返回的URL是当前控制器的URL /行动,而不是我需要的。

回答

5

这是因为URL视图助手选择最后一个活动路线。如果你有多个路由总是定义路由使用的是:

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

第二个参数是要使用的路线,一个第三个可选的参数,如果所有PARAMS需要重置(真/假)。

+0

呃......当然我应该设置路线的名字为'default'。非常感谢Kees的帮助! – stefan

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; 
    } 
} 

因此,要生成一个URL,你只需要调用,

$this->fullUrl('search'); 

将输出,

www.example.com/search