Blame view

frontend/controllers/BasketController.php 3.14 KB
fe7b6960   Yarik   Basket
1
  <?php
8ec69373   Yarik   Orders.
2
3
4
5
6
7
8
9
10
11
12
      
      namespace frontend\controllers;
      
      use common\models\Basket;
      use yii\web\Response;
      
      class BasketController extends \yii\web\Controller
      {
          
          public $enableCsrfValidation = false;
          
076b9c96   Administrator   big commti
13
          public function actionMain()
8ec69373   Yarik   Orders.
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
          {
              $response = \Yii::$app->response;
              $response->format = Response::FORMAT_JSON;
              /**
               * @var Basket $basket
               */
              $basket = \Yii::$app->basket;
              $result = [
                  'basket' => $basket->getData(),
                  'modal'  => $this->getModal($basket),
                  'cart'   => $this->getCart($basket),
              ];
              return $result;
          }
          
          public function actionAdd(int $product_variant_id, int $count)
          {
              $response = \Yii::$app->response;
              $response->format = Response::FORMAT_JSON;
              /**
               * @var Basket $basket
               */
              $basket = \Yii::$app->basket;
              $basket->add($product_variant_id, $count);
              $result = [
                  'basket' => $basket->getData(),
                  'modal'  => $this->getModal($basket),
                  'cart'   => $this->getCart($basket),
              ];
              return $result;
          }
          
          public function actionSet(int $product_variant_id, int $count)
          {
              $response = \Yii::$app->response;
              $response->format = Response::FORMAT_JSON;
              /**
               * @var Basket $basket
               */
              $basket = \Yii::$app->basket;
              $basket->set($product_variant_id, $count);
              $result = [
                  'basket' => $basket->getData(),
                  'modal'  => $this->getModal($basket),
                  'cart'   => $this->getCart($basket),
              ];
              return $result;
          }
          
          public function actionTest()
          {
              /**
               * @var Basket $basket
               */
              $basket = \Yii::$app->basket;
              $modal = $this->getModal($basket);
              return $modal;
          }
          
fe7b6960   Yarik   Basket
73
          /**
8ec69373   Yarik   Orders.
74
75
           * @var $basket \common\models\Basket
           * @return string modal_items
fe7b6960   Yarik   Basket
76
           */
8ec69373   Yarik   Orders.
77
78
          public function getModal($basket): string
          {
7c3211cc   Administrator   big commti
79
80
81
82
  
              \Yii::$app->getAssetManager()->bundles['yii\web\JqueryAsset']['js'] =[];
  
  
8ec69373   Yarik   Orders.
83
84
85
86
              $output = '';
              $data = $basket->getData();
              $models = $basket->findModels(array_keys($data));
              if(!empty( $models )) {
7c3211cc   Administrator   big commti
87
                  $output = $this->renderAjax('modal_items', [
8ec69373   Yarik   Orders.
88
89
90
91
92
93
94
                      'models' => $models,
                      'basket' => $basket,
                  ]);
              }
              return $output;
          }
          
fe7b6960   Yarik   Basket
95
          /**
8ec69373   Yarik   Orders.
96
97
98
           * @param Basket $basket
           *
           * @return string
fe7b6960   Yarik   Basket
99
           */
8ec69373   Yarik   Orders.
100
101
102
103
104
105
106
          public function getCart($basket): string
          {
              $count = $basket->getCount();
              $sum = $basket->getSum();
              $output = $this->renderPartial('cart', [
                  'count' => $count,
                  'sum'   => $sum,
d09f430f   Administrator   big commti
107
              ]);
8ec69373   Yarik   Orders.
108
              return $output;
d09f430f   Administrator   big commti
109
          }
d09f430f   Administrator   big commti
110
      }