index.php 4.41 KB
<?php
    /**
     * @var ActiveDataProvider $dataProvider
     * @var OrderSearch        $searchModel
     * @var View               $this
     */
    
    use artweb\artbox\ecommerce\models\Delivery;
    use artweb\artbox\ecommerce\models\Label;
    use artweb\artbox\ecommerce\models\OrderSearch;
    use kartik\daterange\DateRangePicker;
    use kartik\select2\Select2;
    use yii\data\ActiveDataProvider;
    use yii\helpers\Html;
    use yii\grid\GridView;
    use yii\helpers\Url;
    use yii\web\View;
    use yii\widgets\ActiveForm;
    
    $this->title = 'Заказы';
    $this->params[ 'breadcrumbs' ][] = $this->title;
    
    $js = <<< JS
$('[name="OrderSearch[phone]"]').mask('+38(000)000-00-00', {
    placeholder: '+38(___)___-__-__'
});
JS;
    
    $this->registerJs($js, View::POS_READY);
?>
<h1>Заказы</h1>
<p>
    <?= Html::a('Add order', [ 'create' ], [ 'class' => 'btn btn-success' ]) ?>
</p>

<?php
    $searchForm = ActiveForm::begin(
        [
            'method' => 'GET',
            'action' => Url::to([ 'order/index' ]),
            'id'     => 'search-form',
        ]
    );
?>

<p>
    
    <?php echo Html::submitButton(
        'Search',
        [
            'class' => 'btn btn-primary',
        ]
    ) ?>

</p>

<?php
    echo Select2::widget(
        [
            'model'         => $searchModel,
            'attribute'     => 'label',
            'data'          => Label::find()
                                       ->joinWith('lang')
                                       ->select(['CONCAT(order_label.label,order_label_lang.title) AS name', 'id'])
                                       ->indexBy('id')
                                       ->asArray()
                                       ->column(),
            'options'       => [ 'placeholder' => 'Select a state ...' ],
            'pluginOptions' => [
                'allowClear' => true,
                'multiple'   => true,
            ],
        ]
    );
?>
<br>
<?php
    echo Select2::widget(
        [
            'model'         => $searchModel,
            'attribute'     => 'delivery',
            'data'          => Delivery::find()
                                       ->joinWith('lang')
                                       ->select('order_delivery_lang.title, id')
                                       ->indexBy('id')
                                       ->asArray()
                                       ->column(),
            'options'       => [ 'placeholder' => 'Select a state ...' ],
            'pluginOptions' => [
                'allowClear' => true,
                'multiple'   => true,
            ],
        ]
    );
?>
<p>
<?php
    echo GridView::widget(
        [
            'dataProvider' => $dataProvider,
            'filterModel'  => $searchModel,
            'columns'      => [
                [
                    'attribute' => 'id',
                    'filter'    => $searchForm->field($searchModel, 'id')
                                              ->textInput(),
                ],
                [
                    'attribute' => 'created_at',
                    'format'    => 'date',
                    'filter'    => $searchForm->field($searchModel, 'date_range')
                                              ->widget(
                                                  DateRangePicker::className(),
                                                  [
                                                      'convertFormat' => false,
                                                      'pluginOptions' => [
                                                          'locale' => [
                                                              'format'    => 'D-M-Y',
                                                              'separator' => ' to ',
                                                          ],
                                                          'opens'  => 'left',
                                                      ],
                                                  ]
                                              )
                                              ->label(false)
                                              ->render(),
                ],
                'name',
                'phone',
                'status',
                [
                    'class' => 'yii\grid\ActionColumn',
                ],
            ],
        ]
    );
?>
</p>
<?php
    ActiveForm::end();
?>