loop8 / yii2-l8-actioncolumn

添加获取默认按钮标记的函数

安装: 680

依赖项: 0

建议者: 0

安全: 0

星级: 0

关注者: 3

分支: 0

开放问题: 0

类型:yii2-extension

v1.0.0 2015-01-18 19:23 UTC

This package is not auto-updated.

Last update: 2024-09-24 22:50:45 UTC


README

添加获取默认按钮标记的函数

安装

安装此扩展的首选方式是通过composer

运行以下命令之一

php composer.phar require --prefer-dist loop8/yii2-l8-actioncolumn "*"

或者将以下内容添加到你的composer.json文件的require部分。

"loop8/yii2-l8-actioncolumn": "*"

用法

此扩展向ActionColumn添加以下静态函数

  • L8ActionColumn::viewButton($url, $model, $key, $visible = true)
  • L8ActionColumn::updateButton($url, $model, $key, $visible = true)
  • L8ActionColumn::deleteButton($url, $model, $key, $visible = true)
  • L8ActionColumn::ajaxDeleteButton($url, $model, $key, $visible = true, $options = [])

这些函数可以根据visible标志渲染或隐藏默认的ActionColumn按钮。这样你就不必在每个GridView小部件中重新编写默认按钮标记。`L8ActionColumn::ajaxDeleteButton`函数添加了一个options数组,可以用于传递数据到ajax调用,并且按钮将有一个CSS类名`l8ajax-delete`,你可以用它来绑定事件。

一旦安装了此扩展,只需在代码中简单地使用它

<?php
use loop8\l8actioncolumn\L8ActionColumn;
?>

并在你的视图文件中使用GridView

<?php \yii\widgets\Pjax::begin(['timeout' => 5000, 'id' => 'pjax-container']); ?>

    <?= GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            // column definitions

            [
                'class' => L8ActionColumn::className(),
                //'template' => '{view} {update} {delete}', // you can leave out the buttons which you won't need
                'buttons' => [
                    'view' => function($url, $model, $key) {
                        return L8ActionColumn::viewButton($url, $model, $key, !empty(Yii::$app->user->identity)); // check that the user is authenticated
                    },
                    'update' => function($url, $model, $key) {
                        return L8ActionColumn::updateButton($url, $model, $key, !empty(Yii::$app->user->identity)); // check that the user is authenticated
                    },
                    'delete' => function($url, $model, $key) {
                        return L8ActionColumn::ajaxDeleteButton($url, $model, $key, !empty(Yii::$app->user->identity), ['data-name' => yii\helpers\Html\Html::encode($model['firstName'] . " " . $model['lastName'])]); // check that the user is authenticated
                    }
                ]
            ],
        ],
    ]); ?>

<?php \yii\widgets\Pjax::end(); ?>

<?php
$initScript = <<<EOF
\$(document).on('click', '.l8ajax-delete', function (event) {
    if(confirm('Are you sure you want to delete "' + \$(event.currentTarget).attr('data-name') + '"?')) {
        \$.ajax(\$(event.currentTarget).attr('data-url'), {
            dataType: "json",
            type: "post"
        }).done(function(data) {
            if(data.response = 'Ok') {
                \$.pjax.reload({container:'#pjax-container'});
            } else {
                alert('Error : ' + data.response);
            }
        });
    }
});
EOF;

$this->registerJs($initScript);