Yii2. Как динамически добавить параметры в url?

Рейтинг: 1Ответов: 1Опубликовано: 19.04.2015

Например, текущий урл выглдит так:

http://site.com/users?UserSearch[name]=damn&UserSearch[age]=100500

Этот урл генерирует стандартная поисковая форма, кот. находится в файле _search

Как брать текущий урл и добавлять динамически параметры? Т.е. у меня есть доп ссылки "Отображать по 10 50 100 и все" на странице. Как сделать ссылку, например, на кнопке 50, чтобы она указывала на

http://site.com/users?UserSearch[name]=damn&UserSearch[age]=100500&UserSearch[pageSize]=all

Прошу заметить, что текущий адрес - /users, а не /users/index Не предлагайте клиентские скрипты типа history.js. Как сделать силами феймворка?

Ответы

▲ 2Принят

Писал по документации, без проверки.

private function generateSearchUrl(array $additionalParameters = [])
{
    $parameters = array_merge(
        ['users/index',],
        Yii::$app->request->queryParams,
        $additionalParameters
    );
    return Url::to($parameters);
}
...
public function actionIndex()
{
    $context = array(
        'tenResultsLink' => $this->generateSearchUrl(['UserSearch[pagesize]' => 10]),
        'fiftyResultsLink' => $this->generateSearchUrl(['UserSearch[pagesize]' => 50]),
        'hundredResultsLink' => $this->generateSearchUrl(['UserSearch[pagesize]' => 100]),
        'allResultsLink' => $this->generateSearchUrl(['UserSearch[pagesize]' => 'all']),
    );
    $this->render('index', $context);
}

Наверняка поддается дополнительной оптимизации.