2

Zend Framework のページネーションに関する概念的なアドバイスが必要です。

私はチャームのように機能する Zend_Paginator を使用しています。私の見解では、ユーザーがページごとに必要な行数を選択するためのセレクターが必要です。これは setItemCountPerPage() メソッドのパラメーターを設定します。今のところ、私は次のように私のビューにハードコードされた選択フォーム要素(jQueryでURLの変更をトリガーする)を持っています:

   <select id="rpp" name="rpp">
       <option value="/goods">--</option>
       <option value="/goods/rpp/2">[2 for dev]</option>
       <option value="/goods/rpp/5">5 <?php echo $this->translate('Rows per page') ?></option>
       <option value="/goods/rpp/15">15 <?php echo $this->translate('Rows per page') ?></option>
       <option value="/goods/rpp/25">25 <?php echo $this->translate('Rows per page') ?></option>
       <option value="/goods/rpp/50">50 <?php echo $this->translate('Rows per page') ?></option>
       <option value="/goods/rpp/100">100 <?php echo $this->translate('Rows per page') ?>   </option>
   </select>

それは機能しますが、複数のビューでこれが必要になるため、次のような部分的なビューで何かを作成しようとしました:

...
<option value="<?php echo $this->userAgent()->getServerValue('request_uri'); ?>/rpp/2">[2 for dev]</option>
...

しかし、状況によってはルーティングの問題が発生します。

ユーザーがページごとに必要な行数を選択できるようにするなどの機能で可能な最も一般的で再利用可能な、優れた開発戦略とは何でしょうか。

アドバイスありがとうございます。

f.

4

1 に答える 1

2

Zend_Paginator::setDefaultItemCountPerPageBootstrap クラスのセッションに保存されたメソッドと値を使用して、ページごとに項目を設定できます。後である段階で変更したい場合。セッション変数に別の値を割り当てるだけです。例(テストされていません

protected function _initPagination()
{
  $session = new Zend_Session_Namespace('default');
  $itemCountPerPage = (isset($session->itemCountPerPage) 
  ? $session->itemCountPerPage : 5);

  Zend_Paginator::setDefaultItemCountPerPage($itemCountPerPage);
}

後であなたの行動のどこかで:

public function itemCountPerPageAction()
{
  $session = new Zend_Session_Namespace('default');
  $session->itemCountPerPage = $this->_getParam('itemCountPerPage');
  $this->_helper->redirector->gotoUrlAndExit($this->_request->getServer("HTTP_REFERER"));
}
于 2013-03-14T04:43:58.813 に答える