Commit 7520dc0ec49f1931bcbd35565d3ffb231b93c76d
1 parent
6f14188b
-Grid with input in process
Showing
5 changed files
with
146 additions
and
38 deletions
Show diff stats
controllers/OrderController.php
... | ... | @@ -4,6 +4,7 @@ |
4 | 4 | |
5 | 5 | use artweb\artbox\ecommerce\models\OrderSearch; |
6 | 6 | use Yii; |
7 | + use yii\helpers\Json; | |
7 | 8 | use yii\web\Controller; |
8 | 9 | use yii\filters\VerbFilter; |
9 | 10 | use yii\data\ActiveDataProvider; |
... | ... | @@ -141,13 +142,20 @@ |
141 | 142 | { |
142 | 143 | $model = new Order(); |
143 | 144 | |
145 | + $dataProvider = new ActiveDataProvider( | |
146 | + [ | |
147 | + 'query' => $model->getProducts(), | |
148 | + ] | |
149 | + ); | |
150 | + | |
144 | 151 | if ($model->load(Yii::$app->request->post()) && $model->save()) { |
145 | 152 | return $this->redirect([ 'index' ]); |
146 | 153 | } else { |
147 | 154 | return $this->render( |
148 | 155 | 'create', |
149 | 156 | [ |
150 | - 'model' => $model, | |
157 | + 'model' => $model, | |
158 | + 'dataProvider' => $dataProvider, | |
151 | 159 | ] |
152 | 160 | ); |
153 | 161 | } |
... | ... | @@ -155,15 +163,44 @@ |
155 | 163 | |
156 | 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 | 196 | if ($model->load(Yii::$app->request->post()) && $model->save()) { |
161 | 197 | return $this->redirect([ 'index' ]); |
162 | 198 | } else { |
163 | 199 | return $this->render( |
164 | 200 | 'update', |
165 | 201 | [ |
166 | - 'model' => $model, | |
202 | + 'model' => $model, | |
203 | + 'dataProvider' => $dataProvider, | |
167 | 204 | ] |
168 | 205 | ); |
169 | 206 | } | ... | ... |
models/Order.php
... | ... | @@ -94,7 +94,6 @@ |
94 | 94 | 'declaration', |
95 | 95 | 'stock', |
96 | 96 | 'consignment', |
97 | - 'payment', | |
98 | 97 | 'insurance', |
99 | 98 | 'amount_imposed', |
100 | 99 | 'shipping_by', |
... | ... | @@ -106,6 +105,16 @@ |
106 | 105 | 'string', |
107 | 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 | 268 | { |
260 | 269 | $session = new Session; |
261 | 270 | $session->open(); |
262 | - $session[ 'basket' ] = null; | |
271 | + $session[ 'basket' ] = NULL; | |
263 | 272 | } |
264 | 273 | |
265 | 274 | public function getUser() | ... | ... |
views/order/_form.php
1 | 1 | <?php |
2 | 2 | |
3 | 3 | use artweb\artbox\ecommerce\models\Order; |
4 | + use frontend\models\OrderFrontend; | |
5 | + use kartik\grid\GridView; | |
6 | + use yii\data\ActiveDataProvider; | |
4 | 7 | use yii\helpers\Html; |
5 | 8 | use yii\bootstrap\ActiveForm; |
6 | 9 | use yii\helpers\ArrayHelper; |
7 | 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 | 21 | <?php $form = ActiveForm::begin(); ?> |
15 | 22 | <div class="container"> |
16 | 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 | 32 | <div class="col-sm-6"> |
18 | 33 | |
19 | 34 | |
... | ... | @@ -51,13 +66,7 @@ |
51 | 66 | |
52 | 67 | <?= $form->field($model, 'payment') |
53 | 68 | ->dropDownList( |
54 | - [ | |
55 | - 'Оплатить наличными' => 'Оплатить наличными', | |
56 | - 'Оплатить на карту Приват Банка' => 'Оплатить на карту Приват Банка', | |
57 | - 'Оплатить по безналичному расчету' => 'Оплатить по безналичному расчету', | |
58 | - 'Оплатить Правекс-телеграф' => 'Оплатить Правекс-телеграф', | |
59 | - 'Наложенным платежом' => 'Наложенным платежом', | |
60 | - ], | |
69 | + ArrayHelper::getColumn(OrderFrontend::PAYMENT_LIST, 'label'), | |
61 | 70 | [ 'prompt' => '...' ] |
62 | 71 | ); ?> |
63 | 72 | |
... | ... | @@ -94,13 +103,50 @@ |
94 | 103 | </div> |
95 | 104 | </div> |
96 | 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 | 150 | </div> |
104 | 151 | </div> |
105 | -<?php ActiveForm::end(); ?> | |
106 | 152 | ... | ... |
views/order/create.php
1 | 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 | 20 | <div class="order-create"> |
13 | 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 | 31 | </div> |
19 | 32 | ... | ... |
views/order/update.php
1 | 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 | 8 | use artweb\artbox\ecommerce\models\Order; |
9 | + use yii\data\ActiveDataProvider; | |
8 | 10 | use yii\helpers\Html; |
9 | 11 | use yii\web\View; |
10 | 12 | |
11 | - $this->title = 'Заказ №' . $model->id; | |
13 | + $this->title = 'Заказ #' . $model->id; | |
12 | 14 | $this->params[ 'breadcrumbs' ][] = $this->title; |
13 | 15 | ?> |
14 | 16 | <div class="order-update"> |
... | ... | @@ -17,7 +19,8 @@ |
17 | 19 | <?= $this->render( |
18 | 20 | '_form', |
19 | 21 | [ |
20 | - 'model' => $model, | |
22 | + 'model' => $model, | |
23 | + 'dataProvider' => $dataProvider, | |
21 | 24 | ] |
22 | 25 | ) ?> |
23 | 26 | </div> |
24 | 27 | \ No newline at end of file | ... | ... |