loop8 / yii2-l8-actioncolumn
添加获取默认按钮标记的函数
v1.0.0
2015-01-18 19:23 UTC
Requires
- yiisoft/yii2: *
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);