Zend Framework Url View Helper по умолчанию добавляет "id" - PullRequest
6 голосов
/ 18 ноября 2010

Я создаю простой CRUD для добавления ссылок в категорию.У каждой категории есть свой идентификатор.У меня есть представление, в котором перечислены все ссылки для определенной категории.В этом представлении у меня есть ссылка на форму добавления:

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

В настоящее время я строю эту ссылку в представлении, используя следующий синтаксис:

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

I думаю, это можно сделать чище, используя Url View Helper.

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

Но это дает мне следующий URL

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 Ответ

9 голосов
/ 18 ноября 2010

По умолчанию Url ViewHelper объединяет и переопределяет данные параметры с параметрами текущего запроса. Как и в вашем случае id-параметр. Если вы хотите сбросить все параметры, вы должны использовать третий параметр помощника вида: 'reset':

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

Это заставит viewhelper не использовать текущий запрос как «запасной вариант» для не установленных параметров. Поведение по умолчанию особенно полезно, если вы хотите изменить только один или два параметра текущего запроса (например, действие), но не хотите устанавливать все параметры (или, возможно, вы даже не знаете их все).

...