Zend_paginator не меняет значение perPage, когда есть некоторые параметры GETPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Zend_paginator не меняет значение perPage, когда есть некоторые параметры GET

Сообщение Anonymous »

Он работает отлично: когда я нахожусь на первой странице результатов, я могу отобразить необходимое мне количество результатов.
Но когда я нахожусь на другой странице, количество результатов изменить нельзя. Почему?

И когда я, например, нахожусь на 3-й странице, и я показываю 12 на странице, и я пытаюсь изменить это на 60, в конце ссылка у меня есть:

perPage/12/submitPagin/Zastosuj/page/3?perPage=60&submitPagin=Zastosuj


Есть идеи? :)

public listAction(){
(...)
$params = $this->_parseSearchParams( $this->getRequest()->getParams() );
$searchForm = new ListIndexForm( );
$searchForm->setAction( '' );
$searchForm->setDefaults( $params );

$this->view->searchForm = $searchForm;
$this->view->params = $params;

$auth = Zend_Auth::getInstance();

$sql = 'SELECT * FROM Images order by created desc LIMIT 500';
$result = $db->fetchAll($sql);
$this->view->images = $result;

$page=$this->_getParam('page',1);
$paginator = Zend_Paginator::factory($result);

$paginator->setCurrentPageNumber( $this->getRequest()->getParam( 'page', 1 ) );

$paginator->setItemCountPerPage( $params[ 'perPage' ] );

$this->view->paginator = $paginator;
}


моя функция для анализа параметров:

private function _parseSearchParams ( $params )
{
if ( ! isset( $params[ 'perPage' ] ) ) {
$params[ 'perPage' ] = 24;
}

foreach ( $params as $key => $value ) {
if ( is_null( $value ) or $value == '' ) {
unset( $params[ $key ] );
continue;
}

switch ( $key ) {
case 'tags':
case 'im':
case 'module':
case 'submitupdate':
case 'controller':
case 'action':
case 'submit':
unset( $params[ $key ] );
continue;
break;

}
}

return $params;
}


Моя форма для изменения количества результатов на странице:

class ListIndexForm extends Zend_Form {
public function __construct($options = null) {
parent::__construct ( $options );
$this->setMethod ( 'GET' );

$perPageValues = array(
6 => 6,
12 => 12,
18 => 18,
24 => 24,
30 => 30,
60 => 60,
900 => 90,
150 => 150,
300 => 300,
600 => 600,
);
$this->addElement ( 'Select', 'perPage',
array (
'filters' => array(
'Digits'
),
'label' => 'Obrazków na stronę',
'MultiOptions' => $perPageValues,
'value' => 24,
)
);

$this->addElement ( 'Submit', 'submitPagin',
array (
'label' => 'Zastosuj',
)
);

}




просмотреть список.phtml:

(...)







помощник searchpagination.phtml:







[url=">
< Nowsze
[/url] |

< Nowsze |





[url=">

[/url] |

|





[url=">
Starsze >
[/url]

Starsze >





Подробнее здесь: https://stackoverflow.com/questions/767 ... parameters
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»