YII框架实现排序

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>
时间: 2024-10-09 18:10:15

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

YII框架分析笔记8:CDataProvider

CDataProvider,顾名思义,数据提供者,它提供了三个抽象方法(fetchData,.fetchKeys 和 calculateTotalItemCount),分别为调用不同数据结构的数据提供了获取数据.获取键值.获取数量的,接口,在YII框架 中,CActiveDataProvider.CArrayDataProvider.CSqlDataProvider是它的子类,除了提供数据之外, 他还提供分页和排序功能.下面以获取数据fetchData()为例 CActiveDataProvid

php的yii框架下开发环境xampp,vim,xdebug,DBGp的搭建

php的yii框架下开发环境xampp,vim,xdebug,DBGp的搭建 选择Linux桌面环境Deepin2014.1下开发网站的理由很简单,能截图,有搜狗输入法,可以WPS文档记录,终端下复制粘贴很容易,相比ubuntu,fedora死机次数少了,对,就是不用折腾,自带的. 先说vim和DBGp插件. Deepin2014.1简体中文,自带的vim7.4版本,很多配置已经很适合大陆的人使用了,比如Php和Python的调试支持等,不需要重新编译了.可以节省不少步骤.这里提供一个vim的配

使用Yii框架中遇到的三个问题

以下由我们在信易网络公司开发项目的时候终结出的一些经验 1.main.php文件中欲引入全局变量的问题 还原一下此问题:在Yii框架中,main.php一般会作为整个应用的配置文件,保存Application的各种参数,直接return数组.在使用的过程中,因为main.php文件一定会被Yii提前加载,所以将一些全局性的操作也放在了此文件,加载一些类操作啥的没有什么问题,当有一次加了一个全局变量,并且在其它地方使用global获取全局变量时,发现无论我如何努力都得到的是NULL.各种尝试后,终

Yii框架 400 错误

YII  400错误 在YII框架中400错误是csrf校验失败的意思 csrf是什么? CSRF(Cross-site request forgery跨站请求伪造,也被称为"One Click Attack"或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用. 所以,如果你自己没有csrf校验机制,严禁关闭csrf. 怎么关呢? public $enableCsrfValidation=false;  设置 为false为成员变量 如果不关.怎么

Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 &#39;AR模式&#39;]

public function getMinLimit () {        $sql = "...";        $result = yii::app()->db->createCommand($sql);        $query = $result->queryAll();         return array (                $query [0] ['max'],         );    } $connection=Yii::

YII框架的依赖注入容器

依赖注入(Dependency Injection,DI)容器就是一个对象,它知道怎样初始化并配置对象及其依赖的所有对象. 所谓的依赖就是,一个对象,要使用另外一个对象才能完成某些功能.那么这个对象就依赖于被使用的对象. 例如: /** * 厨师 */ class cook { /** * 制作食物 */ public function cooking() { $food = new food(); echo $food->get(),"汤<br/>"; } } /*

Yii框架配置

1.将yii框架命令行工具yiic.bat的路径加入环境变量,以便可以使用CMD命令创建项目 2.创建项目: framework是yii的核心,尽量保持核心包的完整性以后创建多个项目时可以共用,在framework同级的目录创建一个自己的项目文件夹,如:webapp CMD创建项目:>yiic webapp ../webapp/myblog(因为配置的环境变量是在framework下,故返回上层找webapp) 尊重原创,转载请保留:(Yii框架配置)http://www.cnblogs.com

yii框架之gii创建数据表对应的model类

一.首先是在数据库中建立工程需要的表: 二.然后,配置对应文件: 在工程目录下yiiProject\protected\config\main.php.在50行定义了db应用组件,下面后一段注释掉了的mysql的链接配置项,我们将未注释的db注释掉,然后打开mysql链接代码并填写相关信息即可完成mysql链接配置项. 即,把下面代码         'db'=>array(             'connectionString' => 'sqlite:'.dirname(__FILE_

yii框架的调试插件yii-debug-toolbar

1 , 下载地址 https://github.com/malyshev/yii-debug-toolbar.git 2 , yii框架配置 3 , 更改main.php文件 'log'=>array( 'class'=>'CLogRouter', 'routes'=>array( array(         'class'=>'ext.yii-debug-toolbar.YiiDebugToolbarRoute', ), // uncomment the following t