2013-02-13 2 views
2

Использование CakePHP 2.2, я хотел бы, чтобы создать ссылку в представлении:Как сохранить HtmlHelper от вылетающих частей URL

<a href="/teams/edit/${$data.Team.id}">Edit</a> 

Эта разметка позже подобран шаблонизатор Javascript, следовательно ${$data.Team.id} часть ,

Это была моя первая попытка очевидна:

echo $this->Html->link(
    'Edit', 
    array('controller' => 'teams', 'action'=>'edit', '${$data.Team.id}') 
); 

Результат:

<a href="/teams/edit/%24%7B%24data.Team.id%7D">Edit</a> 

$, { и } красиво кодировке URL - которые я не хочу.

ОК, но есть опция 'escape' => false, говорит The Book.

echo $this->Html->link(
    'Edit', 
    array('controller' => 'teams', 'action'=>'edit', '${$data.Team.id}'), 
    array('escape' => false) 
); 

Результат не меняется. По-видимому, параметр 'escape' влияет только на обработку фактических строк запроса в ключе '?' массива URL.

Как достичь желаемого результата с помощью HtmlHelper?

+3

Недействительно, чтобы эти символы не были сохранены в имени пути. –

+0

Это не торт, ваш браузер кодирует эти символы. paste 'Edit'; результат тот же. можете ли вы использовать атрибуты 'data-'? – Ross

+0

@ FabrícioMatté: как я уже писал: разметка проходит через дальнейшую обработку Javascript до того, как она вставлена ​​в DOM в качестве фактической ссылки. Эти символы являются заполнителями и будут заменены. – pixelistik

ответ

1

Невозможно достичь того, чего вы хотите. Маршрутизатор будет urlencode всех именованных и переданных параметров. Вы можете использовать HtmlHelper::url() для генерации части /teams/edit/, а затем использовать простую конкатенацию строк.

Редактировать: Возможно, вы можете использовать пользовательский RouteClass и перезаписать метод CakeRoute :: _ writeUrl(), который выполняет кодировку. Передайте специальный параметр в массиве url, чтобы сказать ему, чтобы он не кодировался, и этот параметр отменяет этот параметр.

+0

Спасибо за четкое «нет». Ваше предложение об обходном пути тоже приятно, я сделаю это так. Это всего лишь 1-2 ссылки в моем приложении. – pixelistik

0

В итоге я создал свой собственный помощник для этого и не использовал вспомогательный элемент связи. В моем помощнике я использовал помощник url ​​для генерации базового url, затем я добавил мои требуемые параметры.

Смежные вопросы