在我的布局脚本中,我希望创建一个链接,使用url视图助手将 [?|&] lang = en 附加到当前网址。所以,我希望这种情况发生:
http://localhost/user/edit/1 => http://localhost/user/edit/1?lang=en
http://localhost/index?page=2 => http://localhost/index?page=2&lang=en
我尝试过建议Zend Framework: Append query strings to current page url的解决方案,直接访问路由器,但确实有效。
我的布局脚本包含:
<a href="<?=$this->escape( $this->url( array('lang'=>'en')) )?>">English</a>
如果使用默认路线,它将附加 / lang / en ,但是当使用其他路线时,根本不会附加任何路线。
那么,有没有办法在Zend中执行此操作而不必解析URL?
修改
对不起,我的错误解释。不,我还没有制作自定义路由器。我刚刚添加了其他路由。我的错。一条不起作用的路线是:
$Routes = array(
'user' => array(
'route' => 'admin/user/:mode/:id',
'defaults' => array('controller' => 'admin', 'action' => 'user', 'mode'=>'', 'id' => 0)
)
);
foreach( $Routes as $k=>$v ) {
$route = new Zend_Controller_Router_Route($v['route'], $v['defaults']);
$router->addRoute($k, $route);
}
答案 0 :(得分:1)
UPD:
您必须在路线中添加通配符或明确定义“lang”参数。
'admin/user/:mode/:id/*'
此外,根据您的评论,您可以执行以下操作:
class controllerplugin extends Zend_Controller_Plugin_Abstract
{
function routeShutdown($request)
{
if($request->getParam('lang', false) {
//store lang
Zend_Controller_Front::getInstance()->getRouter()->setGlobalParam('lang', NULL); //check if this will remove lang from wildcard parameters, have no working zf installation here to check.
}
}
}