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 use common\models\Slider;
7 7 use common\modules\product\models\Category;
8 8 use common\models\Page;
  9 +use common\modules\product\models\Product;
  10 +use common\modules\product\models\ProductVariant;
9 11 use Yii;
10 12 use yii\base\InvalidParamException;
11 13 use yii\web\BadRequestHttpException;
... ... @@ -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 89 * Displays homepage.
77 90 *
... ... @@ -251,4 +264,27 @@ class SiteController extends Controller
251 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 57 </div>
58 58 </div>
59 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 63 <?= FilterWidget::widget([
63 64 'category'=>$category,
64 65 'groups'=> $groups,
... ...