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

时间:2010-11-18 13:35:59

标签: zend-framework url view-helpers

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

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

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

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

认为使用Url View Helper可以更清洁。

<?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 View Helper的代码。为什么还有一个额外的id / 3?

谢谢!

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

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

1 个答案:

答案 0 :(得分:9)

默认情况下,Url ViewHelper会合并并使用当前请求参数覆盖给定参数。就像你的情况一样,id参数。如果要重置所有参数,必须使用view-helper的第3个参数:'reset':

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

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