ページネーションの混乱-ページネーションはstartを使用し、PopulateStateはlimitstartを使用しますか?


7

少し混乱しています。

フロントエンドのページネーションによって作成されたリンクを見ると、個々のページ番号リンクと開始リンクと終了リンクに含まれているstartというクエリパラメーターが表示されて います。

ただし、populateState基本JModelListクラスのメソッドはlimitstartifに$this->contextがあるかどうかを探しnon null valueます。

JModelListセットの基本コンストラクター$this->contextが等しい<component_name>.<model_name>場合のデフォルトの場合$this->contextnullにはならないため、populateStateは通常、$_GET['limitstart']使用さgetUserStateFromRequest()れる値を割り当てられます。

$value = $app->getUserStateFromRequest($this->context . '.limitstart', 'limitstart', 0);
$limitstart = ($limit != 0 ? (floor($value / $limit) * $limit) : 0);
$this->setState('list.start', $limitstart); 

なぜこのように処理が行われるのか、およびページを開始する行を保持する変数について合意するために、populateStateページネーションを取得するために何をしなければならないかを誰かが説明できたら、本当にありがたいです。

TIA。


あなたが呼び出すことにより、デフォルトのページネーションを使用している場合$pagination = $this->get('Pagination');、ビューファイルに、必要な状態は、モデルのpopulateState方法でvarsの、このように理解しやすいです-$limit= $app->getUserStateFromRequest('global.list.limit', 'limit', $app->getCfg('list_limit'), 'uint'); $this->setState('list.limit', $limit); $limitstart = JRequest::getUInt('limitstart', 0); $this->setState('list.start', $limitstart);
DEV-mを

だから私はこれがjmodellistから拡張されたモデルクラスのpopulateState()メソッドをオーバーライドすることで基本的に何をするかを返信したように、そうでなければ親クラスコードで混乱するでしょう。
dev-m

ソリューションを提供してくれた@professionalに感謝します。startとlimitstartの間の変更はSEFと関係があると思いますが、スイッチがまだどこにあるのかわかりません。回答として返信を投稿していただければ、承諾します。
Nick Weavers、2014年

回答:


3

joomlaがプロセスのページレンダリングの最後から最後までそれらを使用するため、いくつかのデフォルトコードは混乱します。要件に従って、ページ分割には2つの状態変数を設定する必要があるため、モデルの上書きされたPopulateState()メソッドで設定する必要があります(source-com_weblinks)-

// List state information
$limit = $app->getUserStateFromRequest('global.list.limit', 'limit', $app->getCfg('list_limit'), 'uint');
$this->setState('list.limit', $limit);

$limitstart = JRequest::getUInt('limitstart', 0);
$this->setState('list.start', $limitstart);

さらに、jmodellist親クラスのgetPagination()メソッドを見ると、ページングを表示するために状態変数からどのように計算されるかがわかります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.