Commit 7520dc0ec49f1931bcbd35565d3ffb231b93c76d

Authored by Alexey Boroda
1 parent 6f14188b

-Grid with input in process

controllers/OrderController.php
@@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
4 4
5 use artweb\artbox\ecommerce\models\OrderSearch; 5 use artweb\artbox\ecommerce\models\OrderSearch;
6 use Yii; 6 use Yii;
  7 + use yii\helpers\Json;
7 use yii\web\Controller; 8 use yii\web\Controller;
8 use yii\filters\VerbFilter; 9 use yii\filters\VerbFilter;
9 use yii\data\ActiveDataProvider; 10 use yii\data\ActiveDataProvider;
@@ -141,13 +142,20 @@ @@ -141,13 +142,20 @@
141 { 142 {
142 $model = new Order(); 143 $model = new Order();
143 144
  145 + $dataProvider = new ActiveDataProvider(
  146 + [
  147 + 'query' => $model->getProducts(),
  148 + ]
  149 + );
  150 +
144 if ($model->load(Yii::$app->request->post()) && $model->save()) { 151 if ($model->load(Yii::$app->request->post()) && $model->save()) {
145 return $this->redirect([ 'index' ]); 152 return $this->redirect([ 'index' ]);
146 } else { 153 } else {
147 return $this->render( 154 return $this->render(
148 'create', 155 'create',
149 [ 156 [
150 - 'model' => $model, 157 + 'model' => $model,
  158 + 'dataProvider' => $dataProvider,
151 ] 159 ]
152 ); 160 );
153 } 161 }
@@ -155,15 +163,44 @@ @@ -155,15 +163,44 @@
155 163
156 public function actionUpdate($id) 164 public function actionUpdate($id)
157 { 165 {
158 - $model = $this->findModel($id); 166 + if (\Yii::$app->request->post('hasEditable'))
  167 + {
  168 + $orderProductId = \Yii::$app->request->post('editableKey');
  169 + $orderProduct = OrderProduct::findOne($orderProductId);
  170 + $out = Json::encode(['output'=>'', 'message'=>'']);
  171 +
  172 + $posted = current(\Yii::$app->request->post('OrderProduct'));
  173 + $post = ['OrderProduct' => $posted];
  174 +
  175 + if ($orderProduct->load($post))
  176 + {
  177 + $orderProduct->save();
  178 + $output = '';
  179 + if (isset($posted['count'])) {
  180 + $output = Yii::$app->formatter->asDecimal($orderProduct->count, 0);
  181 + }
  182 + $out = Json::encode(['output'=>$output, 'message'=>'']);
  183 + }
159 184
  185 + return $out;
  186 + }
  187 +
  188 + $model = $this->findModel($id);
  189 +
  190 + $dataProvider = new ActiveDataProvider(
  191 + [
  192 + 'query' => $model->getProducts(),
  193 + ]
  194 + );
  195 +
160 if ($model->load(Yii::$app->request->post()) && $model->save()) { 196 if ($model->load(Yii::$app->request->post()) && $model->save()) {
161 return $this->redirect([ 'index' ]); 197 return $this->redirect([ 'index' ]);
162 } else { 198 } else {
163 return $this->render( 199 return $this->render(
164 'update', 200 'update',
165 [ 201 [
166 - 'model' => $model, 202 + 'model' => $model,
  203 + 'dataProvider' => $dataProvider,
167 ] 204 ]
168 ); 205 );
169 } 206 }
@@ -94,7 +94,6 @@ @@ -94,7 +94,6 @@
94 'declaration', 94 'declaration',
95 'stock', 95 'stock',
96 'consignment', 96 'consignment',
97 - 'payment',  
98 'insurance', 97 'insurance',
99 'amount_imposed', 98 'amount_imposed',
100 'shipping_by', 99 'shipping_by',
@@ -106,6 +105,16 @@ @@ -106,6 +105,16 @@
106 'string', 105 'string',
107 'max' => 255, 106 'max' => 255,
108 ], 107 ],
  108 + [
  109 + [ 'payment' ],
  110 + 'in',
  111 + 'range' => [
  112 + 1,
  113 + 2,
  114 + 3,
  115 + 4,
  116 + ],
  117 + ],
109 ]; 118 ];
110 } 119 }
111 120
@@ -259,7 +268,7 @@ @@ -259,7 +268,7 @@
259 { 268 {
260 $session = new Session; 269 $session = new Session;
261 $session->open(); 270 $session->open();
262 - $session[ 'basket' ] = null; 271 + $session[ 'basket' ] = NULL;
263 } 272 }
264 273
265 public function getUser() 274 public function getUser()
views/order/_form.php
1 <?php 1 <?php
2 2
3 use artweb\artbox\ecommerce\models\Order; 3 use artweb\artbox\ecommerce\models\Order;
  4 + use frontend\models\OrderFrontend;
  5 + use kartik\grid\GridView;
  6 + use yii\data\ActiveDataProvider;
4 use yii\helpers\Html; 7 use yii\helpers\Html;
5 use yii\bootstrap\ActiveForm; 8 use yii\bootstrap\ActiveForm;
6 use yii\helpers\ArrayHelper; 9 use yii\helpers\ArrayHelper;
7 use artweb\artbox\ecommerce\models\Delivery; 10 use artweb\artbox\ecommerce\models\Delivery;
  11 + use yii\web\View;
8 12
9 - /* @var $this yii\web\View */  
10 - /* @var $model Order */  
11 - /* @var $form yii\widgets\ActiveForm */ 13 + /**
  14 + * @var View $this
  15 + * @var Order $model
  16 + * @var ActiveForm $form
  17 + * @var ActiveDataProvider $dataProvider
  18 + */
12 ?> 19 ?>
13 20
14 <?php $form = ActiveForm::begin(); ?> 21 <?php $form = ActiveForm::begin(); ?>
15 <div class="container"> 22 <div class="container">
16 <div class="row"> 23 <div class="row">
  24 + <div class="form-group">
  25 + <?= Html::submitButton(
  26 + $model->isNewRecord ? 'Create' : 'Update',
  27 + [ 'class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary' ]
  28 + ) ?>
  29 + </div>
  30 + </div>
  31 + <div class="row">
17 <div class="col-sm-6"> 32 <div class="col-sm-6">
18 33
19 34
@@ -51,13 +66,7 @@ @@ -51,13 +66,7 @@
51 66
52 <?= $form->field($model, 'payment') 67 <?= $form->field($model, 'payment')
53 ->dropDownList( 68 ->dropDownList(
54 - [  
55 - 'Оплатить наличными' => 'Оплатить наличными',  
56 - 'Оплатить на карту Приват Банка' => 'Оплатить на карту Приват Банка',  
57 - 'Оплатить по безналичному расчету' => 'Оплатить по безналичному расчету',  
58 - 'Оплатить Правекс-телеграф' => 'Оплатить Правекс-телеграф',  
59 - 'Наложенным платежом' => 'Наложенным платежом',  
60 - ], 69 + ArrayHelper::getColumn(OrderFrontend::PAYMENT_LIST, 'label'),
61 [ 'prompt' => '...' ] 70 [ 'prompt' => '...' ]
62 ); ?> 71 ); ?>
63 72
@@ -94,13 +103,50 @@ @@ -94,13 +103,50 @@
94 </div> 103 </div>
95 </div> 104 </div>
96 </div> 105 </div>
97 -<div class="row">  
98 - <div class="form-group">  
99 - <?= Html::submitButton(  
100 - $model->isNewRecord ? 'Create' : 'Update',  
101 - [ 'class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary' ]  
102 - ) ?> 106 +
  107 +<?php ActiveForm::end(); ?>
  108 +<div class="container">
  109 + <div class="row">
  110 + <?php
  111 + echo GridView::widget(
  112 + [
  113 + 'dataProvider' => $dataProvider,
  114 + 'columns' => [
  115 + 'id',
  116 + 'product_name',
  117 + 'sku',
  118 + [
  119 + 'class' => 'kartik\grid\EditableColumn',
  120 + 'attribute' => 'count',
  121 + 'editableOptions' => [
  122 + 'header' => \Yii::t('app', 'Количество'),
  123 + 'inputType' => kartik\editable\Editable::INPUT_SPIN,
  124 + 'options' => [
  125 + 'pluginOptions' => [
  126 + 'min' => 0,
  127 + 'max' => 5000,
  128 + ],
  129 + ],
  130 + ],
  131 + 'hAlign' => 'right',
  132 + 'vAlign' => 'middle',
  133 + 'width' => '7%',
  134 + 'format' => [
  135 + 'decimal',
  136 + 2,
  137 + ],
  138 + 'pageSummary' => true,
  139 + ],
  140 + [
  141 + 'class' => 'yii\grid\ActionColumn',
  142 + 'template' => '{delete}',
  143 + ],
  144 + ],
  145 + 'responsive' => true,
  146 + 'hover' => true,
  147 + ]
  148 + );
  149 + ?>
103 </div> 150 </div>
104 </div> 151 </div>
105 -<?php ActiveForm::end(); ?>  
106 152
views/order/create.php
1 <?php 1 <?php
2 -use yii\helpers\Html;  
3 -use yii\grid\GridView;  
4 -use yii\bootstrap\ActiveForm;  
5 -  
6 -  
7 -$this->title = 'Добавить товар в заказ';  
8 -$this->params['breadcrumbs'][] = ['label' => 'Pages', 'url' => ['index']];  
9 -$this->params['breadcrumbs'][] = $this->title; 2 + /**
  3 + * @var Order $model
  4 + * @var ActiveDataProvider $dataProvider
  5 + * @var View $this
  6 + */
  7 + use artweb\artbox\ecommerce\models\Order;
  8 + use yii\data\ActiveDataProvider;
  9 + use yii\helpers\Html;
  10 + use yii\web\View;
  11 +
  12 + $this->title = 'Добавить товар в заказ';
  13 + $this->params[ 'breadcrumbs' ][] = [
  14 + 'label' => 'Pages',
  15 + 'url' => [ 'index' ],
  16 + ];
  17 + $this->params[ 'breadcrumbs' ][] = $this->title;
10 ?> 18 ?>
11 19
12 <div class="order-create"> 20 <div class="order-create">
13 <h1><?= Html::encode($this->title) ?></h1> 21 <h1><?= Html::encode($this->title) ?></h1>
14 -  
15 - <?= $this->render('_form', [  
16 - 'model' => $model,  
17 - ]) ?> 22 +
  23 + <?= $this->render(
  24 + '_form',
  25 + [
  26 + 'model' => $model,
  27 + 'dataProvider' => $dataProvider,
  28 + 'pjax' => true,
  29 + ]
  30 + ) ?>
18 </div> 31 </div>
19 32
views/order/update.php
1 <?php 1 <?php
2 /** 2 /**
3 - * @var Order $model  
4 - * @var View $this 3 + * @var Order $model
  4 + * @var View $this
  5 + * @var ActiveDataProvider $dataProvider
5 */ 6 */
6 7
7 use artweb\artbox\ecommerce\models\Order; 8 use artweb\artbox\ecommerce\models\Order;
  9 + use yii\data\ActiveDataProvider;
8 use yii\helpers\Html; 10 use yii\helpers\Html;
9 use yii\web\View; 11 use yii\web\View;
10 12
11 - $this->title = 'Заказ ' . $model->id; 13 + $this->title = 'Заказ #' . $model->id;
12 $this->params[ 'breadcrumbs' ][] = $this->title; 14 $this->params[ 'breadcrumbs' ][] = $this->title;
13 ?> 15 ?>
14 <div class="order-update"> 16 <div class="order-update">
@@ -17,7 +19,8 @@ @@ -17,7 +19,8 @@
17 <?= $this->render( 19 <?= $this->render(
18 '_form', 20 '_form',
19 [ 21 [
20 - 'model' => $model, 22 + 'model' => $model,
  23 + 'dataProvider' => $dataProvider,
21 ] 24 ]
22 ) ?> 25 ) ?>
23 </div> 26 </div>
24 \ No newline at end of file 27 \ No newline at end of file