Show page=1 in the CLinkPager first page link

Hi,

My application saves every search input (and the current page viewed by user) into user session and add the search id into the pagination params.




$pagination = array(

	'pageVar' => 'page',

	'currentPage' => $currentPage - 1,

	'params' => array(

		'search' => $searchId,

	)

);



But since the first page link at the CLinkPager don’t show ‘page=1’ parameter, everytime I click the link from other page (say page 2), the application will think that I need the current ‘search’ (whose current page value is 2).

To rephrase the question, is there any way to make CLinkPager shows param ‘page=1’ at the first page link? Or do you have another suggestion on handling this :)

Thanks

As I know CLinkPager store all $_GET params in url automatically. So if you use a form(wich method is get) in your page as “search model”(which return CDataProvider) you don’t need to think about it. It’s already in yii.

My code is currently like this




public function actionIndex() {


		$model = new User();

		if (isset($_POST['User'])) {

			$model->setAttributes($_POST['User']);

		} else {

			if (isset($_GET['search'])) {

				$searchId = $_GET['search'];

				//Just getting a variable stored in the session

				//array(

				//     $searchId => array(

				//          'model' => $model //the search model

				//          'pageSize' => $pageSize //current pagination page size

				//          'currentPage' => $currentPage //the search model

				//     )

				//);

				$search = Yii::app()->user->getSearch($searchId); 

				$model->setAttributes($search['model'], false);

				$currentPage = $search['currentPage'];

				$pageSize = $search['pageSize'];

			} else {

				//create default search

			}

		}


		//Managing pageSize parameter

		if (isset($_GET['pageSize'])) { //Check whether there is pageSize in $_GET parameters

			if (in_array($_GET['pageSize'], $this->getPageSizes())) {

				$pageSize = $_GET['pageSize'];

			} else {

				$pageSize = self::DEFAULT_SEARCH_PAGESIZE;

			}

		} else if (!isset($pageSize)) { //Check whether pageSize is already defined before

			$pageSize = self::DEFAULT_SEARCH_PAGESIZE;

		}

		//Managing currentPage parameter

		if (isset($_GET['page'])) { //Check whether there is page parameter in $_GET parameter 

			$currentPage = $_GET['page'];

		} else if (!isset($currentPage)) { //Check whether page is already defined before

			$currentPage = self::DEFAULT_CURRENT_PAGE;

		}


		//Saving all into new session

		$newSearch = array(

			'model' => $model->getAttributes(),

			'currentPage' => $currentPage,

			'pageSize' => $pageSize,

		);

		//Check whether if there is a search before and if it exists check whether the two search is the same

		if (!isset($search) || (serialize($search) != serialize($newSearch))) {

			//Saves into session

			$searchId = Yii::app()->user->saveSearch($newSearch);

		} //else use the old search id

			

		//-----------------------------------------------------

		//Building the search

		//Setting criteria

		$criteria = new CDbCriteria(array(

					'select' => array(

						'*', //just to simplify things

					),

				));




		//Appending criteria to search model used

		$criteria = $model->search($criteria);


		//Appending pagination to current variables

		$pagination = array(

			'pageSize' => $pageSize,

			'pageVar' => 'page',

			'currentPage' => $currentPage - 1,

			'params' => array(

				'search' => $searchId, //include the search ID in the link pager request URL

			)

		);


		//Creating dataProvider for the search

		$dataProvider = new CActiveDataProvider('Property', array(

					'criteria' => $criteria,

					'pagination' => $pagination,

				));

		//Rendering

		$this->render('index', array(

			'dataProvider' => $dataProvider,

			'pageSize' => $pageSize,

			'model' => $model,

			'searchId' => $searchId,

		));

}



the problem is, every first page link in the CLinkPager wont include a ‘param=1’ query string in the request, so it always assume the page stored in the session. If you want to give a better suggestion, please do.

I have that:





$dataprovider->pagination = array(

                        'params' => array_merge($_GET,array("param"=>1)),

                );