Commit d08b44b4b1e038a4b84e9c1c6834eee6e6a9b5fc

Authored by Alexey Boroda
1 parent b2a90d20

-Find by sku

frontend/controllers/SiteController.php
@@ -6,6 +6,8 @@ use common\models\Blog; @@ -6,6 +6,8 @@ use common\models\Blog;
6 use common\models\Slider; 6 use common\models\Slider;
7 use common\modules\product\models\Category; 7 use common\modules\product\models\Category;
8 use common\models\Page; 8 use common\models\Page;
  9 +use common\modules\product\models\Product;
  10 +use common\modules\product\models\ProductVariant;
9 use Yii; 11 use Yii;
10 use yii\base\InvalidParamException; 12 use yii\base\InvalidParamException;
11 use yii\web\BadRequestHttpException; 13 use yii\web\BadRequestHttpException;
@@ -71,7 +73,18 @@ class SiteController extends Controller @@ -71,7 +73,18 @@ class SiteController extends Controller
71 ], 73 ],
72 ]; 74 ];
73 } 75 }
74 - 76 +
  77 + public function beforeAction($action)
  78 + {
  79 + if ($this->action->id == 'sku')
  80 + {
  81 + $this->enableCsrfValidation = false;
  82 + }
  83 +
  84 + return parent::beforeAction($action);
  85 +
  86 + }
  87 +
75 /** 88 /**
76 * Displays homepage. 89 * Displays homepage.
77 * 90 *
@@ -251,4 +264,27 @@ class SiteController extends Controller @@ -251,4 +264,27 @@ class SiteController extends Controller
251 'model' => $model, 264 'model' => $model,
252 ]); 265 ]);
253 } 266 }
  267 +
  268 + public function actionSku()
  269 + {
  270 + $sku = Yii::$app->request->post('sku');
  271 + if(empty($sku)) throw new NotFoundHttpException('Не задан артикул');
  272 +
  273 + $variant = ProductVariant::find()
  274 + ->where([
  275 + 'sku' => $sku,
  276 + ])
  277 + ->with('product')->one();
  278 + if(empty($variant))
  279 + {
  280 + throw new NotFoundHttpException('Артикул не найден');
  281 + } else
  282 + {
  283 + return $this->redirect([
  284 + 'catalog/product',
  285 + 'product' => $variant->product->alias,
  286 + 'variant' => $variant->sku,
  287 + ]);
  288 + }
  289 + }
254 } 290 }
frontend/views/catalog/products.php
@@ -57,8 +57,9 @@ $this->params['breadcrumbs'][] = $this->title; @@ -57,8 +57,9 @@ $this->params['breadcrumbs'][] = $this->title;
57 </div> 57 </div>
58 </div> 58 </div>
59 <div class="title">Фильтры</div> 59 <div class="title">Фильтры</div>
60 - <div><input type="text" placeholder="Артикул"></div>  
61 - 60 + <form method="post" action="/site/sku">
  61 + <div><input name="sku" type="text" placeholder="Артикул"></div>
  62 + </form>
62 <?= FilterWidget::widget([ 63 <?= FilterWidget::widget([
63 'category'=>$category, 64 'category'=>$category,
64 'groups'=> $groups, 65 'groups'=> $groups,