Search code examples
phpyiiyii2pjax

getQueryParams() from gridview's url after search and create another URL with same params for anchor tag inside GridView


I'm using GridView::widget, when I enter anything on search box inside gridview, it's creating url as below:

/v2/backend/web/index.php/agency/index?AgencySearch%5Bgovt_name%5D=&AgencySearch%5Bcity%5D=&AgencySearch%5Bmember_id%5D=22

Now I need to pass those paramters to url inside status icons present under GridView's Status column.

echo Url::to(['agency/change-status', 'id' => 33, 'set' => 11, Yii::$app->request->getQueryParams()]);

Above code is creating url as below:

/v2/backend/web/index.php/agency/33/change-status/11?1%5BAgencySearch%5D%5Bgovt_name%5D=&1%5BAgencySearch%5D%5Bcity%5D=&1%5BAgencySearch%5D%5Bmember_id%5D=22

And it makes sense because Yii::$app->request->getQueryParams() is an array. Note 1 inside url change-status/11?1%5BAgencySearch

Is there any simplest Yii way of achieving what I need instead of modifying Yii::$app->request->getQueryParams() as per Url::to() that is into string.

I'm trying to pass parameters in order to persist the state of gridview while loading contents again on grid after status change pjax request.


Solution

  • Use array_merge to combine your route and parameters and the search params.

    $params = array_merge(['agency/change-status', 'id' => 33, 'set' => 11], Yii::$app->request->getQueryParams());
    echo Url::to($params);