2

私はcakePHPを使用しており、クリックして別のページに移動したときに、paginatorコンポーネントを取得してget変数またはpassedargsを渡そうとしています。返された結果を「フィルタリング」するさまざまな検索入力セレクターがあります。これは最初のビューで機能しますが、別のページをクリックすると、すべての結果が表示されます。

私のページネーターには次の設定があります。

// In my controller class:
public $paginate = array('maxLimit' => 10, 'paramType' => 'querystring');

// Within my action method:
$this->paginate = array('conditions' => array(...),
                        order => array('Model.field ASC'),
                        'limit' => 20 
 );

 // Calling the paginator:
 $results = $this->paginate('Model');
 $this->set(compact('results'));

私のビューファイル:

 <div class="paging">
<?php
    echo $this->Paginator->prev('< ' . __('previous'), array(), null, array('class' => 'prev disabled'));
    echo $this->Paginator->numbers(array('separator' => ''));
    echo $this->Paginator->next(__('next') . ' >', array(), null, array('class' => 'next disabled'));
?>
</div>

編集: 私の理解から、passedArgsを使用する方が良いですが、これを行う方法については少しわかりません。$ this-> passedArgsは結果を返さないので、コントローラーの例で渡されたパラメーターを作成しています。また、フォームをGetからPostに変更しました。

 $this->passedArgs["searchfield"] = $_POST["value"];

これで、passedArgsがページングストリップで正しく渡されますが、ページング条件配列を作成する方法がわかりません。ほとんどの場合、ユーザーはデフォルト値の例を選択しません。フィルターの1つはdatefromとdatetoで、次に検索入力ボックスです。日付を残すと、まだ引数が作成され、結果が返されないため、基本的にURLが返されます。次のようになります:

 http://localhost/site/controller/action/page:3/datefrom:0/dateto:0/searchFor:survey

何か助けはありますか?

4

1 に答える 1

2

ビュー内のすべてのパラメーターを次のように渡すことができます。

$this->Paginator->options(array('url' => $this->passedArgs));

または、パラメータを手動で割り当てます。

$this->Paginator->options(array('url' => array("0", "1")));

ページネーターをエコーする前に

その他の例については、 CakePHPクックブックを参照してください

于 2012-05-02T12:13:08.013 に答える