6

我正在创建一个简单的 CRUD 来添加到类别的链接。每个类别都有一个 id。我有一个列出某个类别的所有链接的视图。在该视图中,我有一个指向添加表单的链接,即:

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);
4

1 回答 1

9

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

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

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

于 2010-11-18T14:02:19.820 回答