私はCakePHPを使用して、MySQLバックエンドを使用してPowerDNSのフロントエンドUIを作成しています。アプリのフロントページに、いくつかのウィジェット(「レコードをすばやく追加する」、「ドメインをすばやく追加する」など)が必要です。私が欲しいウィジェットの1つは、既存のドメインのページ付けされたリストです。
DomainsController.phpのインデックス関数は次のようになります。
public $paginate = array(
'fields' => array('id', 'name'),
'limit' => 25,
'order' => array( 'name' => 'asc' ),
'conditions' => array( "NOT" => array( "name LIKE" => "%.arpa" ) )
);
public function index() {
$domains = $this->paginate();
if ( $this->request->is('requested')) {
return $domains;
} else {
$this->set('domains', $domains);
}
}
次のような要素を作成しました。
<?php $domains = $this->requestAction('Domains/index'); ?>
<ol>
<?php foreach( $domains as $domain) :?>
<li>echo $domains['domain']['name']</li>
<?php endforeach; ?>
</ol>
<?php echo $paginator->numbers(); ?>
フロントページにアクセスすると、「未定義の変数:paginator」エラーが発生します。代わりに$this->Paginator-> numbers()を使用してみましたが、「Undefined property:View ::$Paginator」が表示されます。「Paginator」ヘルパーをPagesController.phpに追加しても、どちらも役に立ちません。$ this-> Paginatorが使用可能になりますが、「Undefined index:pageCount」が表示されます。
home.ctpの要素からこの種のページ付けを行うことは可能ですか、それともカスタムJavaScriptの処理を行う必要がありますか?
編集
今、私はどこかに到達しています:DomainsControllerインデックス関数を次のように変更しました:
public function index() {
$domains = $this->paginate();
$paginator = $this->params;
if ( $this->request->is('requested')) {
return compact( 'domains', 'paginator' );
} else {
$this->set('domains', $domains);
}
}
そして、domainList.ctp要素に以下を追加しました。
<?php
$result = $this->requestAction('Domains/index');
$domains = $result['domains'];
$this->Paginator->request = $result['paginator'];
?>
<ol>
<?php foreach( $domains as $domain) :?>
<li>echo $domains['domain']['name']</li>
<?php endforeach; ?>
</ol>
<?php echo $paginator->numbers(); ?>
$ this-> Paginatorが正常に機能するようになり、通常どおり、そのすべてのメソッドやプロパティなどにアクセスできます。私の問題は、たとえば「2」をクリックすると、ブラウザが/ pages / home / page:2に移動しますが、ドメインリストにはまだページ1が表示されていることです。「page:2」を渡す方法を理解する必要があります。要素に。そして、ページ全体を更新する必要がないように、全体をAJAX化してください。