To add a BooleanColumn to the gridview, add it to the [[GridView::columns|columns]] configuration as follows: php 'columns' => [ ... [ 'class' => BooleanColumn::className(), you may configure additional properties here ], ]
Since: 1.0
Author: Kartik Visweswaran (kartikv2@gmail.com)
Inheritance: extends DataColumn
Esempio n. 1
1
 public function init()
 {
     if (empty($this->trueLabel)) {
         $this->trueLabel = Yii::t('yii', 'Yes');
     }
     if (empty($this->falseLabel)) {
         $this->falseLabel = Yii::t('yii', 'No');
     }
     parent::init();
 }
Esempio n. 2
0
    /**
     * @inheritdoc
     */
    public function init()
    {
        parent::init();
        if (empty($this->tableName)) {
            throw new InvalidConfigException('The "tableName" property must be set.');
        }
        $view = Yii::$app->getView();
        Html::addCssClass($this->buttonOptions, $this->buttonClass);
        if (!$this->tableColumn) {
            $this->tableColumn = $this->attribute;
        }
        $id = Yii::$app->request->post('id');
        $tableColumn = Yii::$app->request->post('tableColumn');
        if (Yii::$app->request->isPost && $tableColumn === $this->tableColumn) {
            /* @var \yii\db\Connection $db */
            $db = Yii::$app->get($this->db);
            $json['r'] = false;
            $query = new Query();
            $row = $query->from($this->tableName)->select(['a' => $this->tableColumn])->where(['id' => $id])->limit(1)->one($db);
            if ($row) {
                if ($row['a']) {
                    $active = false;
                    $result = $this->falseIcon;
                } else {
                    $active = true;
                    $result = $this->trueIcon;
                }
                $update = [$this->tableColumn => $active];
                if (is_array($this->update)) {
                    foreach ($this->update as $column => $value) {
                        if (is_integer($column)) {
                            $update[$value] = new Expression('NOW()');
                        } else {
                            if ($value instanceof \Closure) {
                                $update[$column] = $value($column, $this);
                            } else {
                                $update[$column] = $value;
                            }
                        }
                    }
                }
                $db->createCommand()->update($this->tableName, $update, 'id=:id', [':id' => $id])->execute();
                $json['r'] = true;
                $json['res'] = $result;
            }
            $response = Yii::$app->getResponse();
            $response->clearOutputBuffers();
            $response->setStatusCode(200);
            $response->format = Response::FORMAT_JSON;
            $response->data = $json;
            $response->send();
            Yii::$app->end();
        }
        $view->registerJs('
            $(document).on("click", ".' . $this->buttonClass . '", function(){
                var $btn = $(this);

                $btn.html("' . $this->loading . '");
                $btn.attr("disabled", true);

                $.ajax({
                    url: "' . Url::current() . '",
                    type: "POST",
                    dataType: "json",
                    data: {id: $btn.attr("data-id"), tableColumn: $btn.attr("data-column")},
                }).done(function(d){
                    if(d.r){
                        $btn.html(d.res);
                    }
                }).always(function(jqXHR, textStatus){
                    $btn.attr("disabled", false);
                });

            });
        ');
    }
Esempio n. 3
0
<?php

/**
 * @var yii\web\View $this
 * @var yii\data\ActiveDataProvider $dataProvider
 * @var \app\models\Form $searchModel
 */
use app\backend\components\ActionColumn;
use kartik\dynagrid\DynaGrid;
use kartik\grid\BooleanColumn;
use kartik\helpers\Html;
use kartik\icons\Icon;
$this->title = Yii::t('app', 'Content Blocks');
$this->params['breadcrumbs'][] = $this->title;
?>

<?php 
echo app\widgets\Alert::widget(['id' => 'alert']);
?>

<?php 
echo DynaGrid::widget(['options' => ['id' => 'backend-chunk-grid'], 'columns' => [['class' => \kartik\grid\CheckboxColumn::className(), 'options' => ['width' => '10px']], ['class' => 'yii\\grid\\DataColumn', 'attribute' => 'id'], 'name', 'key', ['class' => BooleanColumn::className(), 'attribute' => 'preload'], ['class' => ActionColumn::className(), 'options' => ['width' => '95px'], 'buttons' => [['url' => 'edit', 'icon' => 'pencil', 'class' => 'btn-primary', 'label' => Yii::t('app', 'Edit')], ['url' => 'delete', 'icon' => 'trash-o', 'class' => 'btn-danger', 'label' => Yii::t('app', 'Delete')]]]], 'theme' => 'panel-default', 'gridOptions' => ['dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'hover' => true, 'panel' => ['heading' => Html::tag('h3', $this->title, ['class' => 'panel-title']), 'after' => Html::a(Icon::show('plus') . Yii::t('app', 'Add'), ['/core/backend-chunk/edit', 'returnUrl' => \app\backend\components\Helper::getReturnUrl()], ['class' => 'btn btn-success']) . \app\backend\widgets\RemoveAllButton::widget(['url' => '/core/backend-chunk/remove-all', 'gridSelector' => '.grid-view', 'htmlOptions' => ['class' => 'btn btn-danger pull-right']])]]]);
Esempio n. 4
0
<?php

use app\backend\components\ActionColumn;
use kartik\dynagrid\DynaGrid;
use kartik\grid\BooleanColumn;
use kartik\helpers\Html;
use kartik\icons\Icon;
/**
 * @var $this yii\web\View
 * @var $searchModel app\components\SearchModel
 * @var $dataProvider yii\data\ActiveDataProvider
 */
$this->title = Yii::t('app', 'Payment Types');
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="payment-type-index">
    <?php 
echo DynaGrid::widget(['options' => ['id' => 'payment-types-grid'], 'theme' => 'panel-default', 'gridOptions' => ['dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'hover' => true, 'panel' => ['heading' => Html::tag('h3', $this->title, ['class' => 'panel-title']), 'after' => Html::a(Icon::show('plus') . Yii::t('app', 'Add'), ['edit', 'returnUrl' => \app\backend\components\Helper::getReturnUrl()], ['class' => 'btn btn-success']) . \app\backend\widgets\RemoveAllButton::widget(['url' => 'remove-all', 'gridSelector' => '.grid-view', 'htmlOptions' => ['class' => 'btn btn-danger pull-right']])]], 'columns' => [['class' => \kartik\grid\CheckboxColumn::className(), 'options' => ['width' => '10px']], 'id', 'name', 'class', 'commission', ['class' => BooleanColumn::className(), 'attribute' => 'active'], ['class' => BooleanColumn::className(), 'attribute' => 'payment_available'], 'sort', ['class' => ActionColumn::className()]]]);
?>
</div>
Esempio n. 5
0
<?php 
echo app\widgets\Alert::widget(['id' => 'alert']);
?>

<div class="row">
    <div class="col-md-12" id="jstree-more">

        <?php 
$this->beginBlock('buttonGroup');
?>
        <div class="btn-toolbar" role="toolbar">
            <div class="btn-group">
                <?php 
echo \yii\helpers\Html::a(Icon::show('plus') . Yii::t('app', 'Add'), ['/shop/backend-discount/edit', 'returnUrl' => \app\backend\components\Helper::getReturnUrl()], ['class' => 'btn btn-success']);
?>
            </div>
            <?php 
echo \app\backend\widgets\RemoveAllButton::widget(['url' => \yii\helpers\Url::toRoute(['/shop/backend-discount/remove-all']), 'gridSelector' => '.grid-view', 'htmlOptions' => ['class' => 'btn btn-danger pull-right']]);
?>
        </div>
        <?php 
$this->endBlock();
?>

        <?php 
echo DynaGrid::widget(['options' => ['id' => 'page-grid'], 'columns' => [['class' => \kartik\grid\CheckboxColumn::className(), 'options' => ['width' => '10px']], ['class' => 'yii\\grid\\DataColumn', 'attribute' => 'id'], ['class' => 'yii\\grid\\DataColumn', 'attribute' => 'name'], ['class' => 'yii\\grid\\DataColumn', 'attribute' => 'value'], ['class' => \kartik\grid\BooleanColumn::className(), 'attribute' => 'value_in_percent'], ['class' => 'app\\backend\\components\\ActionColumn']], 'theme' => 'panel-default', 'gridOptions' => ['dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'hover' => true, 'panel' => ['heading' => '<h3 class="panel-title">' . $this->title . '</h3>', 'after' => $this->blocks['buttonGroup']]]]);
?>
    </div>
</div>
Esempio n. 6
0
 /**
  * Generates columns
  * @return array
  */
 public function generateColumns()
 {
     $tableSchema = $this->getTableSchema();
     if ($tableSchema === false) {
         return $this->getColumnNames();
     } else {
         $columns = [];
         foreach ($tableSchema->columns as $column) {
             if ($this->checkColumn($column)) {
                 $columns[$column->name]['attribute'] = $column->name;
                 if ($column->type === 'boolean' || stripos($column->dbType, 'tinyint') !== false) {
                     $columns[$column->name]['class'] = BooleanColumn::className();
                     $columns[$column->name]['trueLabel'] = 'Да';
                     $columns[$column->name]['falseLabel'] = 'Нет';
                 }
             }
         }
         return $columns;
     }
 }
Esempio n. 7
0
 public static function boolean(ActiveRecord $model, $attribute, $options = [])
 {
     $config = ArrayHelper::merge(['class' => \kartik\grid\BooleanColumn::className(), 'attribute' => $attribute, 'trueLabel' => 'Yes', 'falseLabel' => 'No'], self::selectWidgetFilterConfig([0 => 'No', 1 => 'Yes']));
     return ArrayHelper::merge($config, $options);
 }
Esempio n. 8
0
                    <?php 
echo $form->field($model, 'name');
?>
                    <?php 
echo $form->field($model, 'object_id')->dropDownList(app\models\Object::getSelectArray());
?>
                    <?php 
echo $form->field($model, 'is_internal')->checkbox();
?>
                    <?php 
echo $form->field($model, 'hidden_group_title')->checkbox();
?>
                    <?php 
echo $form->field($model, 'sort_order');
?>
                <?php 
BackendWidget::end();
?>
            </article>
        </div>
    </section>
<?php 
ActiveForm::end();
if (!$model->isNewRecord) {
    ?>
    <?php 
    echo DynaGrid::widget(['options' => ['id' => 'group-grid'], 'columns' => [['class' => \kartik\grid\CheckboxColumn::className(), 'options' => ['width' => '10px']], ['class' => \kartik\grid\DataColumn::className(), 'attribute' => 'id'], ['attribute' => 'property_handler_id', 'filter' => app\models\PropertyHandler::getSelectArray(), 'value' => function ($model, $key, $index, $widget) {
        $array = app\models\PropertyHandler::getSelectArray();
        return $array[$model->property_handler_id];
    }], 'name', 'key', ['class' => \kartik\grid\BooleanColumn::className(), 'attribute' => 'has_static_values'], ['class' => \kartik\grid\BooleanColumn::className(), 'attribute' => 'has_slugs_in_values'], ['class' => \kartik\grid\BooleanColumn::className(), 'attribute' => 'is_eav'], ['class' => \kartik\grid\BooleanColumn::className(), 'attribute' => 'is_column_type_stored'], ['class' => \kartik\grid\BooleanColumn::className(), 'attribute' => 'multiple'], ['class' => ActionColumn::className(), 'buttons' => [['url' => 'edit-property', 'icon' => 'pencil', 'class' => 'btn-primary', 'label' => 'Edit'], ['url' => 'delete-property', 'icon' => 'trash-o', 'class' => 'btn-danger', 'label' => 'Delete', 'options' => ['data-action' => 'delete']]], 'url_append' => '&property_group_id=' . $model->id]], 'theme' => 'panel-default', 'gridOptions' => ['dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'hover' => true, 'panel' => ['heading' => Html::tag('h3', Yii::t('app', 'Properties'), ['class' => 'panel-title']), 'after' => Html::a(Icon::show('plus') . Yii::t('app', 'Add'), ['/backend/properties/edit-property', 'property_group_id' => $model->id, 'returnUrl' => \app\backend\components\Helper::getReturnUrl()], ['class' => 'btn btn-success']) . \app\backend\widgets\RemoveAllButton::widget(['url' => \yii\helpers\Url::to(['/backend/properties/remove-all-properties', 'group_id' => $model->id]), 'gridSelector' => '.grid-view', 'htmlOptions' => ['class' => 'btn btn-danger pull-right']])]]]);
}
Esempio n. 9
0
<?php

use kartik\dynagrid\DynaGrid;
use yii\helpers\Html;
use app\backend\components\ActionColumn;
use app\modules\shop\models\AddonCategory;
/*
 * @var $dataProvider yii\data\ActiveDataProvider
 * @var $searchModel \app\modules\shop\models\Addon
 * @var $this yii\web\View
 */
/** @var AddonCategory $addonCategory */
$this->title = Yii::t('app', 'Addon for category "{category}"', ['category' => Html::encode($addonCategory->name)]);
$this->params['breadcrumbs'][] = ['url' => ['index'], 'label' => Yii::t('app', 'Addon categories')];
$this->params['breadcrumbs'][] = ['url' => ['edit-category', 'id' => $addonCategory->id], 'label' => Yii::t('app', 'Category "{category}"', ['category' => Html::encode($addonCategory->name)])];
$this->params['breadcrumbs'][] = $this->title;
echo DynaGrid::widget(['options' => ['id' => 'addons-grid'], 'theme' => 'panel-default', 'gridOptions' => ['dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'hover' => true, 'panel' => ['heading' => Html::tag('h3', $this->title, ['class' => 'panel-title']), 'after' => Html::a(\kartik\icons\Icon::show('plus') . Yii::t('app', 'Add'), ['edit-addon', 'addon_category_id' => $addonCategory->id], ['class' => 'btn btn-success']) . \app\backend\widgets\RemoveAllButton::widget(['url' => 'remove-all-addons', 'gridSelector' => '.grid-view', 'htmlOptions' => ['class' => 'btn btn-danger pull-right']])]], 'columns' => [['class' => \app\backend\columns\CheckboxColumn::className()], 'id', 'name', 'price', ['class' => \kartik\grid\BooleanColumn::className(), 'attribute' => 'add_to_order'], ['class' => \kartik\grid\BooleanColumn::className(), 'attribute' => 'can_change_quantity'], ['class' => ActionColumn::className(), 'buttons' => [['url' => 'edit-addon', 'icon' => 'pencil', 'class' => 'btn-default', 'label' => Yii::t('app', 'Edit'), 'url_append' => '&addon_category_id=' . $addonCategory->id], ['url' => 'delete-addon', 'icon' => 'trash-o', 'class' => 'btn-danger', 'label' => Yii::t('app', 'Delete')]]]]]);
?>

Esempio n. 10
0
 /**
  * @param ActiveRecord $model
  * @param $options
  * @return array
  */
 public function createListWidget($model, $options)
 {
     if (is_array($options) && isset($options[0]) && isset($options[1])) {
         $attribute = array_shift($options);
         $type = array_shift($options);
         $editable = isset($options['editable']) && $options['editable'] == true;
         $editableType = isset($options['editableType']) ? $options['editableType'] : Editable::INPUT_TEXT;
         unset($options['editable'], $options['editableType']);
         $config = ['attribute' => $attribute];
         $choices = [];
         switch ($type) {
             case 'date':
                 $config = ['attribute' => $attribute, 'format' => ['datetime', 'php:Y-m-d'], 'options' => ['style' => 'width:240px'], 'filterWidgetOptions' => ['type' => DatePicker::TYPE_RANGE, 'attribute2' => $attribute . '_to'], 'filterType' => DatePicker::className()];
                 break;
             case 'datetime':
                 $config = ['attribute' => $attribute, 'format' => ['datetime', 'php:Y-m-d H:i:s'], 'options' => ['style' => 'width:240px'], 'filterWidgetOptions' => ['type' => DatePicker::TYPE_RANGE, 'attribute2' => $attribute . '_to'], 'filterType' => DatePicker::className()];
                 break;
             case 'boolean':
                 $choices = ModelHelper::getBooleanChoices($model, $attribute);
                 $config = ['class' => \kartik\grid\BooleanColumn::className(), 'attribute' => $attribute, 'filterWidgetOptions' => ['data' => $choices, 'pluginOptions' => ['allowClear' => true, 'placeholder' => 'Select...']], 'filterType' => Select2::className()];
                 break;
             case 'enumerate':
                 $choices = ModelHelper::getEnumChoices($model, $attribute);
                 $config = ['attribute' => $attribute, 'filterWidgetOptions' => ['data' => $choices, 'pluginOptions' => ['allowClear' => true, 'placeholder' => 'Select...']], 'filterType' => Select2::className()];
                 break;
             case 'relation':
                 $relation = ModelHelper::getRelation($model, $attribute);
                 $choices = ModelHelper::getSelectChoices(new $relation->modelClass());
                 $config = ['label' => ucfirst(strpos($attribute, '.') !== false ? substr($attribute, strrpos($attribute, '.') + 1) : $attribute), 'attribute' => $attribute, 'value' => function ($model, $key, $index, $widget) use($attribute) {
                     return $model ? ModelHelper::getLabelRelationValue($model, $attribute) : null;
                 }, 'filter' => !$relation->multiple ? $choices : false, 'filterWidgetOptions' => ['data' => $choices, 'pluginOptions' => ['allowClear' => true, 'placeholder' => '...']], 'filterType' => Select2::className()];
                 break;
         }
         if ($editable) {
             switch ($type) {
                 case 'date':
                     $config['editableOptions'] = ['inputType' => Editable::INPUT_DATE];
                     break;
                 case 'datetime':
                     $config['editableOptions'] = ['inputType' => Editable::INPUT_DATETIME];
                     break;
                 case 'boolean':
                 case 'enumerate':
                     $config['editableOptions'] = ['inputType' => Editable::INPUT_SELECT2, 'options' => ['data' => $choices], 'displayValueConfig' => $choices];
                     break;
                 case 'relation':
                     $relation = ModelHelper::getRelation($model, $attribute);
                     $config['editableOptions'] = ['inputType' => Editable::INPUT_SELECT2, 'size' => 'lg', 'options' => ['options' => ['multiple' => $relation->multiple], 'data' => $choices, 'pluginOptions' => count($choices) > 20 ? ['minimumInputLength' => 3, 'ajax' => ['url' => Url::to(['/ycm/model/choices', 'name' => $this->getModelName(new $relation->modelClass())]), 'dataType' => 'json', 'processResults' => new JsExpression('function (results) { return results; }')]] : null], 'displayValueConfig' => !$relation->multiple ? $choices : null];
                     break;
                 default:
                     $config['editableOptions']['options'] = $config;
                     break;
             }
             $config = ArrayHelper::merge(['editableOptions' => ['inputType' => $editableType]], $config, ['class' => EditableColumn::className(), 'editableOptions' => ['ajaxSettings' => ['url' => Url::to(['/ycm/model/editable', 'name' => $this->getModelName($model)])]]]);
         }
         $options = ArrayHelper::merge($config, $options);
     }
     return $options;
 }
Esempio n. 11
0
<?php

/**
 * @var yii\web\View $this
 * @var yii\data\ActiveDataProvider $dataProvider
 * @var \app\models\Form $searchModel
 */
use app\backend\components\ActionColumn;
use kartik\dynagrid\DynaGrid;
use kartik\grid\BooleanColumn;
use kartik\helpers\Html;
use kartik\icons\Icon;
$this->title = Yii::t('app', 'Property groups');
$this->params['breadcrumbs'][] = $this->title;
?>

<?php 
echo app\widgets\Alert::widget(['id' => 'alert']);
?>

<?php 
echo DynaGrid::widget(['options' => ['id' => 'properties-grid'], 'columns' => [['class' => \kartik\grid\CheckboxColumn::className(), 'options' => ['width' => '10px']], ['class' => 'yii\\grid\\DataColumn', 'attribute' => 'id'], ['class' => 'yii\\grid\\DataColumn', 'attribute' => 'object_id', 'filter' => app\models\Object::getSelectArray(), 'value' => function ($model, $key, $index, $widget) {
    $array = app\models\Object::getSelectArray();
    return $array[$model->object_id];
}], 'name', ['class' => BooleanColumn::className(), 'attribute' => 'is_internal'], ['class' => BooleanColumn::className(), 'attribute' => 'hidden_group_title'], ['class' => ActionColumn::className(), 'options' => ['width' => '95px'], 'buttons' => [['url' => 'group', 'icon' => 'pencil', 'class' => 'btn-primary', 'label' => Yii::t('app', 'Edit')], ['url' => 'delete-group', 'icon' => 'trash-o', 'class' => 'btn-danger', 'label' => Yii::t('app', 'Delete'), 'options' => ['data-action' => 'delete']]]]], 'theme' => 'panel-default', 'gridOptions' => ['dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'hover' => true, 'panel' => ['heading' => Html::tag('h3', $this->title, ['class' => 'panel-title']), 'after' => Html::a(Icon::show('plus') . Yii::t('app', 'Add'), ['/backend/properties/group', 'returnUrl' => \app\backend\components\Helper::getReturnUrl()], ['class' => 'btn btn-success']) . \app\backend\widgets\RemoveAllButton::widget(['url' => '/backend/properties/remove-all-groups', 'gridSelector' => '.grid-view', 'htmlOptions' => ['class' => 'btn btn-danger pull-right']])]]]);