Php 使用URL视图帮助器生成URL,并在之后传递参数?

Php 使用URL视图帮助器生成URL,并在之后传递参数?,php,zend-framework,Php,Zend Framework,在自定义参数(控制器和操作除外)位于“?”之后的格式中,是否有简单的方法可以使用查看url帮助器生成url 例如: 这将产生: domain.com/index/index/myParam/myValue 我想要 domain.com?myParam=myValue或 domain.com/{controller}/{action}?myParam=myValue您可以使用正则表达式路由的反向字段,例如: $myroute = new Zend_Controller_Router_Rou

在自定义参数(控制器和操作除外)位于“?”之后的格式中,是否有简单的方法可以使用查看url帮助器生成url

例如:

这将产生:

domain.com/index/index/myParam/myValue

我想要

domain.com?myParam=myValue


domain.com/{controller}/{action}?myParam=myValue

您可以使用正则表达式路由的反向字段,例如:

   $myroute = new Zend_Controller_Router_Route_Regex('\?myParam=(.*)',
                    array(1 => 'defaultValue', 'controller' => 'index', 'action' => 'index', 'module' => 'index'),
                    array(1 => 'myValue'),
                    '?myParam=%s'
    );

   $wwwDomainRoute = new Zend_Controller_Router_Route_Hostname(
                    'www.domain.com');

   $plainPathRoute = new Zend_Controller_Router_Route_Static('');

   //this default route is useful for the default routing
   $router->addRoute('wwwroute', $wwwDomainRoute->chain($plainPathRoute));
   $router->addRoute('myroute', $wwwDomainRoute->chain($myroute));
在您看来,只需使用:

   <?php echo $this->url(array('controller' => "index", 'action' => "index", 'myParam' => "myValue"),'myroute'); ?>


注意:使用正则表达式时要小心…

为什么要这样做?这个url结构有什么问题吗?当然,从字面上看OP的问题表明他希望
url()
调用返回包含
domain.com
部分的完整url。根据这种解释,您的答案正确地包括主机名路由。但我怀疑他的兴趣更多的是向查询字符串添加参数。如果是这样,那么我们可以通过删除主机名路由并简单地预先添加一个
baseUrl()
来简化答案。也许我们应该澄清OP的意图?你当然是对的,但是,这个解决方案更可靠,我的回答受到他将域放在示例请求中这一事实的影响。他的问题更多的是关于如何格式化url(和参数),使用Zend_路由器是解决方案。当然,使用路线是正确的选择。据我所知,它的精髓正如您在正则表达式路由中所描述的那样。我只是想知道添加主机名路由是否会使它看起来更复杂,尽管它肯定更健壮。不管怎么说,我只是觉得脖子痛,头发乱。回答得好。干杯