gpt4 book ai didi

php - 在 CakePHP 中的 paginate() 之前在 Controller 中排序

转载 作者:行者123 更新时间:2023-12-04 15:50:58 26 4
gpt4 key购买 nike

所以我在 ItemsController 中有这个可爱的小索引函数:

public function index() {
$this->Item->recursive = 2;
$this->set('items', $this->paginate());
}

之所以是这样,是因为我在 afterFind 上做了一堆计算(添加一个字段,并按它排序)

但我想在 Controller 级别进行排序,以便我可以有最近的()等。如果我在 afterFind 级别上排序,那么无论 Controller 是什么,每次都会这样排序 - 所以这不好。

如何在 Controller 级别进行排序并仍然能够正确使用 $this->paginate()?

仅供引用,这是我的一些 AfterFind:

public function afterFind($results, $primary = false){
parent::afterFind($results, $primary);
foreach ($results as $key => $val) {
// my foreach logic calculating Item.score
}
// the stuff I should be doing on a controller-to-controller basis:
$results = Set::sort($results, '{n}.Item.score', 'desc');
return $results;
}

最佳答案

这是使用 Paginator 进行排序的方式

public function index() {
$this->paginate = array(
'limit' => 10,
'order' => array( // sets a default order to sort by
'Item.name' => 'asc'
)
);
$items = $this->paginate('Item');
$this->set(compact('items'));
}

您认为:

<div class="sort-buttons">
Sort by
<?php echo $this->Paginator->sort('name', 'By Name', array('class' => 'button')); ?>
<?php echo $this->Paginator->sort('score', 'By Score', array('class' => 'button')); ?>
<?php echo $this->Paginator->sort('date', 'By Date', array('class' => 'button')); ?>
</div><!-- /.sort-buttons -->

或者,如果用于创建 REST API,请使用查询字符串:

http://myapp.dev/items/index?sort=score&direction=desc

关于php - 在 CakePHP 中的 paginate() 之前在 Controller 中排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28814990/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com