YII框架实现排序

用YII2实现批量修改排序功能,如下图

控制器:

/**
* Lists all CollectionAlbum models.
* @return mixed
*/
public function actionIndex($collectionId=0)
{
$collection = Collection::findOne($collectionId);
if(!$collection){
throw new NotFoundHttpException('The requested page does not exist.');
} $dataProvider = new ActiveDataProvider([
'query' => $collection->getAlbums(),
'sort' => [
'defaultOrder' => [
'sort'=>SORT_DESC,
'id' => SORT_DESC
]
],
]); if (Yii::$app->request->isPost) {
CollectionAlbum::saveSort(Yii::$app->request->post('ids'),Yii::$app->request->post('sorts'));
}
return $this->render('index', [
'dataProvider' => $dataProvider,
'collection'=>$collection,
]);
}

模型

    /**
*保存排序结果
* @param array $ids 图片ID组成的数组
* @param array $sorts 排序结果组成的数组
* */
public static function saveSort($ids,$sorts){
foreach($ids as $k=>$v){
$album=CollectionAlbum::findOne(intval($v));
$album->sort = $sorts[intval($k)];
$album->save(false);
}
}

视图

<?php

use yii\helpers\Html;
use yii\grid\GridView; /* @var $this yii\web\View */
/* @var $dataProvider yii\data\ActiveDataProvider */ $this->title = '藏品图集:'.$collection->title;
$this->params['breadcrumbs'][] = ['label' => '藏品', 'url' => ['collection/index']];
$this->params['breadcrumbs'][] = '藏品图集'; ?>
<div class="collection-album-index"> <p>
<?= Html::a('添加图片', ['create','collectionId'=>$collection->id], ['class' => 'btn btn-success']) ?>
</p>
<?= Html::beginForm(Yii::$app->request->hostInfo.Yii::$app->request->getUrl(),'post')?>
<?= GridView::widget([
'dataProvider' => $dataProvider, 'columns' => [
[
'header'=>'排序',
'class' => yii\grid\Column::className(),
'content'=>function ($model){
return Html::hiddenInput('ids[]',$model->id).Html::textInput('sorts[]',$model->sort,['style'=>'width:45px;','class'=>'form-control'
]);
}

],
[
'header'=>'图片',
'class' => yii\grid\Column::className(),
'content'=>function($model){
return Html::img($model->img_url.'?imageView2/1/w/100/h/100');
},
],
'summary',
'created_at:datetime',
[
'attribute'=>'status',
'value'=>function($model){
return $model->getStatusName();
},
],
['class' => 'yii\grid\ActionColumn','template'=>'{update} {delete}']
],
'tableOptions'=>['class' => 'table table-striped']
]); ?>
<?= Html::submitButton('更改排序',['class'=>'btn btn-primary'])?>
<?= Html::endForm()?>
</div>

YII框架实现排序的更多相关文章

  1. Yii框架CGridView columns中使用数组或变量传值

    继续Yii框架的学习与使用,CGridView对于网站后台而言十分有用处,可以很快速地实现数据列表显示,并集成排序,搜索等功能,很巧妙. 今天,在项目中遇到了状态显示问题,在controller中定义 ...

  2. Yii框架tips(转)

    yii的一些小的技巧 http://www.yiichina.com/topic/151 db组件 'schemaCachingDuration'=>3600, 为什么不起做用?需要开缓存 如何 ...

  3. Yii框架tips

    db组件 'schemaCachingDuration'=>3600, 为什么不起做用?需要开缓存 如何在页面下边显示sql的查询时间在log组件的routes中加入 array('class' ...

  4. 关于Yii框架的基础知识

    第一次写博文,也不知道怎么写,不太熟悉,带小伙伴学习一样我日常使用的Yii框架. PHP中的开发框架有很多,比如:ThinkPHP.Yii.CI.Laravel.Phalcon等.现在流行度最高的是L ...

  5. YII框架的使用

    YII框架的使用 spit: 吐痰,吐口水, 过去式: spat spat: 本身也可以作为一个单词, 意思是: "小打小闹""小的吵闹""小争吵&q ...

  6. Yii框架记录

    Yii框架记录 Yii 结构 使用yii开发一段时间,发现自身知其形不知其意,重温了下yii,理解框架,也可以梳理自己的知识库,借鉴成长,阶段性总结如下: 模型 模型是MVC模式中的一部分,是表现业务 ...

  7. yii框架学习(MVC)

    路由:两种方式,第一种是默认方式访问,假设配置了虚拟主机,那么localhost/web/index.php?r=admin/index    访问的是controllers目录下的admin控制器里 ...

  8. yii框架安装心得

    最近在学习yii框架, 现在将遇到的一些问题和解决方法写出来与大家分享. yii框架的安装: 下载yii框架之后, 打开文件运行init.bat文件, 如果闪退就打开php的扩展(php_openss ...

  9. Yii框架 400 错误

    YII  400错误 在YII框架中400错误是csrf校验失败的意思 csrf是什么? CSRF(Cross-site request forgery跨站请求伪造,也被称为"One Cli ...

随机推荐

  1. java.lang.RuntimeException: Unable to start activity ComponentInfo

    异常:java.lang.RuntimeException: Unable to start activity ComponentInfo{com.william/com.william.Result ...

  2. thoughtbot/capybara-webkit

    thoughtbot/capybara-webkit A capybara driver that uses WebKit via QtWebKit. Qt Dependency and Instal ...

  3. [置顶] 【GBT28181开发:SIP协议实践】之设备远程启动

    下面学习的是设备远程控制的流程,和设备信息.设备目录.设备状态的流程差不多,主要是描述的协议字段不同,模拟SPVMN系统向源设备发送远程启动控制指令,记录下交互的消息,详细研究了下: 转载请注明出处: ...

  4. oracle rman异机恢复

      Oracle源主机 Oracle目标主机 主机平台 CentOS6.2(final) CentOs6.2(FInal) 主机名 vick rman IP地址 192.168.1.11 192.16 ...

  5. css6种隐藏元素的方法

    6种方式可以隐藏一个元素: 1 CSS display的值是none.(该元素是不会在页面上显示)   2 type="hidden"的表单元素.(该元素是不会在页面上显示)   ...

  6. iframe的一些简单记录

    //获取当前所在IFrame的id var frameId = window.frameElement && window.frameElement.id || ''; //Jquer ...

  7. Java NIO 转载

    原文:http://www.iteye.com/magazines/132-Java-NIO  Java NIO 系列教程 2014-04-28  编辑 wangguo 评论(71条) 有204256 ...

  8. thinkphp phpexcel导入

    上次做了一个基于tp3.2.3的phpexcel导出,这次是phpexcel导入,准备材料phpexcel(不知道下载地址的查看我上一篇博文),虽说是基于thinkphp3.2.3来的,也只不过是引入 ...

  9. python自学笔记(二)python基本数据类型之字符串处理

    一.数据类型的组成分3部分:身份.类型.值 身份:id方法来看它的唯一标识符,内存地址靠这个查看 类型:type方法查看 值:数据项 二.常用基本数据类型 int 整型 boolean 布尔型 str ...

  10. (Problem 53)Combinatoric selections

    There are exactly ten ways of selecting three from five, 12345: 123, 124, 125, 134, 135, 145, 234, 2 ...