Yii, ссылка на текущую страницу с дополнительным параметром
1 октября 2012
Необходимо сослаться ровно на ту же страницу, на которой находимся, но добавить GET-параметр. Например, к http://example.org/post/view/1?x=120&y=321
добавить extra=1
.
В view или контроллере Yii это можно сделать так:
$args = $_GET; $args['extra'] = 1; echo $this->createUrl('', $args);
или покороче
echo $this->createUrl('', array('extra' => 1) + $_GET);
Комментарии RSS по email OK
Внутри что-то вроде http_build_query(array_merge($_GET, $params))?
Нет. Внутри роутер Yii.
собственно говоря не понял, а зачем это публиковать) просто разжижить блог постами? или я просто чего-то не понял, хочу пояснения))
Не понял зачем было использовать именно CHtml::link для показа примера. Ведь суть в добавлении параметра, а не генерации ссылки. Лучше было бы использовать просто $this->createUrl($this->route, CMap::mergeArray($_GET, $newParams)) где $newParams массив параметров которые мы хотим добавить/заменить
Костя, Богдан это просто пример навеяный ответом Qiang в одном из issue на гитхабе насколько я понял :)
Богдан, убрал
CHtml
. Действительно в примере не особо нужен.Костя, захотелось :)
offtop: в заголовке поста опечатка...
Заголовок поста поправьте :-)
А не проще так:
??
Тогда уж
Кончайте складывать массивы! Я понимаю что вы это можете. Но это ужасно. Посмотрите видео: www.destroyallsoftware.com/talks/wat
Алексей, офигительно! :)
Недавно понадобилось заменить массивы на объект имплементирующий ArrayAccess, и я даже не хочу знать что будет при сложении ArrayAccess и массива.
Документация по оераторам массива: us3.php.net/manual/en/language.operators.array.php
Да-да, я в курсе что вы это можете :-) Просто это плохая практика.
Это с каких пор это стало плохой практикой? Если в php нет возможности перегрузить оператор сложения, то это проблема php. В ruby такая возможность есть.
То что задача имеет решение, еще не повод ее решать.
Решение не подходит для корня сайта, если urlManager использует режим urlFormat = path. :(