yii 中使用排序
使用原理类似于pagination
$sort = new Sort([
"attributes" => [
"age" => [
"asc" => ["age" => SORT_ASC],
"desc" => ["age" => SORT_DESC],
"default" => SORT_ASC,
"label" => "年龄"
/*"label" => Inflector::camel2words("age"),*/
],
"name"=>[
"asc" => ["name" => SORT_ASC],
"desc" => ["name" => SORT_DESC],
"default" => SORT_ASC,
"label" => "姓名"
],
],
//默认按id排序,现在改成按name排序
/*"defaultOrder" => ["name" => SORT_ASC],*/
]);
//创建name和age排序链接, 类似LinkPager::widget(["pagination" => $pages]);
//生成<a href="/index.php?r=site%2Flogin&page=1&sort=name" data-sort="name">姓名</a>
$data["name"] = $sort->link("name");
$data["age"] = $sort->link("age");
$data["person"] = Person::find() -> andWhere(["deleted" => "-1"]);;
//分页
$data["pagination"] = new Pagination([
"defaultPageSize" => 4,
//count()是Query类中的方法
"totalCount" => $data["person"]->count(),
]);
//***$data["person"]必须是一个Query对象,才可以调用orderBy(),offset(),limit()等方法
//$sort生成数组["field_name" => ORDER_DESC]填充orderby方法
$data["person"] = $data["person"]->orderBy($sort->orders)
->offset($data["pagination"]->offset)
->limit($data["pagination"]->limit)
->all();
return $this->render("show", $data);
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。