I m 使用 CakePHPP 为 PowerDNS 创建前端界面界面, 使用 MySQL 后端。 在应用程序的首页, 我想要有几块部件( 快速添加记录, 快速添加域名等) 。 我想要的部件之一是现有域名的识别列表 。
域控制器.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- gt; Paginator- gt; numbers (), 但却给了我未定义的属性 : 视图 : $Paginator 。 将 Paginator 助手添加到 Pages currentral. php 也帮不上忙 - $this- gt; paginator 已经可用, 但我得到了未定义的索引: pageCount 。
是否可以从家庭.ctp上的一个元素上做这种剖析, 或者我必须做一些定制的 JavaScript 的东西?
<强 > EDIT 强 >
现在我要说一点:我把我的“域控制器”指数函数换成了这个功能:
public function index() {
$domains = $this->paginate();
$paginator = $this->params;
if ( $this->request->is( requested )) {
return compact( domains , paginator );
} else {
$this->set( domains , $domains);
}
}
在域名 List.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- gt; 显示器正在正常运行, 我可以访问它的所有方法和属性, 并按常态进行。 我现在的问题是, 如果我点击, 比如 2, 浏览器浏览到 / page/ home/ page: 2, 但域列表仍然显示第 1 页 。 只要想清楚如何通过 page: 2 到 元素 。 AJAX 将整件事拼起来, 这样我不需要刷新整页 。