public function run() { $data = null; $cart = $this->getModule()->getCart(); $request = Yii::$app->request; $model = new $this->productClass(); $collection = new Collection(); $collection->setModel($model); if ($this->bulkLoad) { $data = []; $selection = $request->post('selection'); foreach ($selection as $id) { $data[$id] = [reset($model->primaryKey()) => $id]; } } else { $data = [$request->post() ?: $request->get()]; } if ($collection->load($data) && $collection->validate()) { foreach ($collection->models as $position) { if (!$cart->hasPosition($position->getId())) { $cart->put($position); Yii::$app->session->addFlash('success', Yii::t('cart', 'Item has been added to cart')); } else { Yii::$app->session->addFlash('warning', Yii::t('cart', 'Item is in the cart already')); } } } else { Yii::$app->session->addFlash('warning', Yii::t('cart', 'Item does not exists')); } if ($request->isAjax) { Yii::$app->end(); } else { return $this->controller->redirect($request->referrer); } }
public function collectionLoader($scenario, Collection $collection) { $templateModel = $this->newModel(['scenario' => $scenario]); $articleDataModel = new ArticleData(['scenario' => $scenario]); $templateModels = [$templateModel]; for ($i = 1; $i < count(Yii::$app->request->post($templateModel->formName(), [])); ++$i) { $templateModels[] = clone $templateModel; } if (Template::loadMultiple($templateModels, Yii::$app->request->post())) { /** @var Template $template */ foreach ($templateModels as $i => $template) { $articleDataModels = [$articleDataModel]; $texts = ArrayHelper::getValue(Yii::$app->request->post($articleDataModel->formName(), []), $i, []); for ($i = 1; $i < count($texts); ++$i) { $articleDataModels[] = clone $articleDataModel; } ArticleData::loadMultiple($articleDataModels, [$articleDataModel->formName() => $texts]); /** @var ArticleData $text */ foreach ($articleDataModels as $text) { if ($text->article_id === $template->id && $text->validate()) { $template->addText($text); } } } $collection->set($templateModels); } }
public function collectionLoader($scenario, Collection $collection) { $ipModel = $this->newModel(['scenario' => $scenario]); $linkModel = new Link(['scenario' => $scenario]); $ipModels = [$ipModel]; for ($i = 1; $i < count(Yii::$app->request->post($ipModel->formName(), [])); ++$i) { $ipModels[] = clone $ipModel; } if (Ip::loadMultiple($ipModels, Yii::$app->request->post())) { /** @var Ip $ip */ foreach ($ipModels as $i => $ip) { $ipLinkModels = [$linkModel]; $ipLinks = ArrayHelper::getValue(Yii::$app->request->post($linkModel->formName(), []), $i, []); for ($i = 1; $i < count($ipLinks); ++$i) { $ipLinkModels[] = clone $linkModel; } Link::loadMultiple($ipLinkModels, [$linkModel->formName() => $ipLinks]); /** @var Link $link */ foreach ($ipLinkModels as $link) { if ($link->ip_id === $ip->id && $link->validate()) { $ip->addLink($link); } } } $collection->set($ipModels); } }