代码之家  ›  专栏  ›  技术社区  ›  Niels Bom

Zend Framework Url View Helper默认添加“id”

  •  6
  • Niels Bom  · 技术社区  · 14 年前

    我正在创建一个简单的CRUD,用于向类别添加链接。每个类别都有一个id。我有一个视图,其中列出了某个类别的所有链接。在这个视图中,我有一个指向add表单的链接,它是:

    http://example.com/link/add/categoryId/3
    

    我目前使用以下语法在视图中构建该链接。

    <?php echo $this->baseUrl();?>/link/add/categoryId/<?php echo $this->category['id']; ?>
    

    认为 这可以通过使用Url视图助手来完成。

    <?php echo $this->url(array('controller'=>'link','action'=>'add','categoryId'=>$this->category['id'])); ?>
    

    但这给了我以下网址

    http://example.com/link/add/id/3/categoryId/3
    

    …有一个额外的“id/3”。 我读过但没有完全理解Url视图助手的代码。怎么会有额外的身份证呢?

    谢谢!

    @Fge给出了正确的答案,下面是我更新的完整语法。

    echo $this->url(array('controller'=>'link','action'=>'add','categoryId'=>$this->category['id']),null,true);
    
    1 回复  |  直到 14 年前
        1
  •  9
  •   Fge    14 年前

    默认情况下,Url ViewHelper使用当前请求参数合并和重写给定参数。就像你的例子中的id参数一样。如果要重置所有参数,则必须使用视图助手的第三个参数:“reset”:

    $this->url(array(), 'route'( = null to use the default), true);
    

    这将强制viewhelper不使用当前请求作为未设置参数的“回退”。如果您只想更改当前请求的一个或两个参数(如操作),但不想设置所有参数(或者您甚至不知道所有参数),则默认行为特别有用。