ActionBar
ActionBar is a Yii 2 widget that render the drop-down list for manipulation selected the GridView items and control buttons. The widget permits you to fully customize elements., (*1)
, (*2)
Installation
You can install the widget using Composer. Just run the following command under your application folder:, (*3)
php composer.phar require --prefer-dist mickgeek/yii2-actionbar
Usage
use mickgeek\actionbar\Widget as ActionBar;
= ActionBar::widget([
'grid' => 'user-grid',
]) ?>
But first, add the action to your controller:, (*4)
public function actions()
{
return [
'delete-multiple' => [
'class' => 'mickgeek\actionbar\DeleteMultipleAction',
'modelClass' => 'app\models\User',
],
];
}
Note: You can write your action without using DeleteMultipleAction
class., (*5)
Tip: For information about properties and methods of the widget, see the bundled DOCUMENTATION.md
., (*6)
Examples
Below are two examples showing some features of the widget., (*7)
Advanced Bulk Actions
, (*8)
The code in the view:, (*9)
use yii\helpers\Url;
use mickgeek\actionbar\Widget as ActionBar;
= ActionBar::widget([
'grid' => 'user-grid',
'templates' => [
'{bulk-actions}' => ['class' => 'col-xs-4'],
'{create}' => ['class' => 'col-xs-8 text-right'],
],
'bulkActionsItems' => [
'Update Status' => [
'status-active' => 'Active',
'status-blocked' => 'Blocked',
],
'General' => ['general-delete' => 'Delete'],
],
'bulkActionsOptions' => [
'options' => [
'status-active' => [
'url' => Url::toRoute(['update-status', 'status' => 'active']),
'disabled' => !Yii::$app->user->can('updateUserStatus'),
],
'status-blocked' => [
'url' => Url::toRoute(['update-status', 'status' => 'blocked']),
'disabled' => !Yii::$app->user->can('updateUserStatus'),
],
'general-delete' => [
'url' => Url::toRoute('delete-multiple'),
'data-confirm' => 'Are you sure?',
'disabled' => !Yii::$app->user->can('deleteUser'),
],
],
'class' => 'form-control',
],
]) ?>
The code in the User controller:, (*10)
public function actions()
{
return [
'delete-multiple' => [
'class' => 'mickgeek\actionbar\DeleteMultipleAction',
'modelClass' => 'app\models\User',
'beforeDeleteCallback' => function ($action) {
if (!Yii::$app->user->can('deleteOwnAccount', Yii::$app->getRequest()->post('ids'))) {
Yii::$app->getSession()->setFlash('error', 'You cannot delete your own account.');
$action->redirect();
Yii::$app->end();
}
},
'afterDeleteCallback' => function ($action) {
Yii::$app->getSession()->setFlash('success', 'The selected users have been deleted successfully.');
},
],
];
}
public function actionUpdateStatus($status)
{
...
}
, (*11)
The code:, (*12)
use mickgeek\actionbar\Widget as ActionBar;
/* @var $model app\models\User */
= ActionBar::widget([
'templates' => [
'{back}' => ['class' => 'col-xs-4'],
'{update} {delete}' => ['class' => 'col-xs-8 text-right'],
],
'elements' => [
'back' => Html::a(
' ' . 'Back',
['/users/index'],
['class' => 'btn btn-default']
),
'update' => Html::a(
' ' . 'Update',
['/users/update', 'id' => $model->id],
['class' => 'btn btn-default']
),
'delete' => Html::a(
' ' . 'Delete',
['/users/delete', 'id' => $model->id],
['class' => 'btn btn-default']
),
],
]) ?>
License
This extension is released under the BSD 3-Clause License. See the bundled LICENSE.md
for details., (*13)