我正在使用Cakephp 1.2。我应该可以用A-Z或Z-A对分页进行排序。但是,我在下面收到此错误。在其他资源中找不到太多信息。请帮忙。
注意(8):未定义的变量:paginator [APP / views / elements / products.ctp,第25行] 致命错误:在第25行的/Applications/MAMP/htdocs/development03/app/views/elements/products.ctp中调用非对象的成员函数sort()
控制器
var $helpers = array('Html','Form','Ajax','Javascript', 'Text');
// Pagination
var $paginate = array('limit' => 8, 'page' => 1,'order'=>array('Product.name' => 'asc'));
function lists(){
$categories = $this->Category->find('all', array('order' => 'Category.id ASC' ));
$categories = $this->Category->buildCategories($categories, $this->passedArgs['c']);
$children_ids = $this->Category->getChildCategories($categories, $this->passedArgs['c'], true);
$allCatIds = array_merge(array($this->passedArgs['c']), $children_ids);
//return lists
return $this->Product->lists($allCatIds);
}
元素
<?php
$products = $this->requestAction("/products/lists/c:$catId/");
?>
<?php echo $paginator->sort('Name', 'name', array('title' => 'Sorting Title Alphabetically','class' => 'normalTip')); ?>
<?php foreach ($products as $product): ?>
...
<?php endforeach; ?>
答案 0 :(得分:1)
要在元素中使用paginator类,必须在控制器中包含帮助程序类。因此,您的控制器代码将如下所示:
var $helpers = array('Html','Form','Ajax','Javascript', 'Text', 'Paginator');
更多说明: “致命错误:当你试图通过一个从未被任何类实例化的对象访问该方法时,就会调用非对象上的成员函数sort()”。因此,您的应用程序必须知道它是哪种对象。
请问它是否有效。
答案 1 :(得分:0)
听起来$ paginator并没有设置为任何东西。
如果您将此代码放在视图中,是否说$ paginator为NULL?
var_dump($paginator);
从提供的代码中很难说,但我认为你要么