Php 路由和URL参数-ZendFramework

Php 路由和URL参数-ZendFramework,php,routes,zend-framework,zend-route,Php,Routes,Zend Framework,Zend Route,我对zendframework路线和参数有问题 我的视图页面中有语言选择器: <div class="language-chooser"> <? $params = Zend_Controller_Front::getInstance()->getRequest()->getParams(); unset($params['module']); unset($params['controller']); unset($par

我对zendframework路线和参数有问题

我的视图页面中有语言选择器:

 <div class="language-chooser">
    <?
    $params = Zend_Controller_Front::getInstance()->getRequest()->getParams();
    unset($params['module']);
    unset($params['controller']);
    unset($params['action']);
    ?>
    <a href="<?= $this->url(array_merge($params, array('lang' => 'pt'))); ?>"><img src="<?= $this->baseUrl('/images/flags/br.png'); ?>" alt="" /></a>
    <a href="<?= $this->url(array_merge($params, array('lang' => 'en'))); ?>"><img src="<?= $this->baseUrl('/images/flags/us.png'); ?>" alt="" /> </a>
</div>
我得到的链接没有lang参数。例如:本地主机/应用程序/联系人/

我怎样才能解决这个问题


谢谢

第一个示例基于默认路由,看起来像
:module/:controller/:action/*

注意路线末端的
*
;它定义url可以包含其他键/值对

要使您的联系路线正常工作,您可以使用

$route = new Zend_Controller_Router_Route(
    '/contact/:lang',
    array(
        'module' => 'default',
        'controller' => 'contact',
        'action' => 'index'
    )
);
这将使url看起来像
/contact/pt
。或者您可以使用:

$route = new Zend_Controller_Router_Route(
    '/contact/*',
    array(
        'module' => 'default',
        'controller' => 'contact',
        'action' => 'index'
    )
);

这将导致
/contact/index/lang/pt

您也可以使用此代码:

$Router = Zend_Controller_Front::getInstance()->getRouter();
$Router->addRoute('move', new Zend_Controller_Router_Route(
    '/contact/:lang',
    array(
        'module' => 'default',
        'controller' => 'contact',
        'action' => 'index'
    ),
    array(
        'lang' => '[a-z]+'
    )
));


阅读此“注意路由末尾的
*
;它定义url可以包含额外的键/值对。”=>这就是让我发疯的原因。我需要星星。。。谢谢!!!
$Router = Zend_Controller_Front::getInstance()->getRouter();
$Router->addRoute('move', new Zend_Controller_Router_Route(
    '/contact/:lang',
    array(
        'module' => 'default',
        'controller' => 'contact',
        'action' => 'index'
    ),
    array(
        'lang' => '[a-z]+'
    )
));