コード例 #1
0
 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);
     }
 }
コード例 #2
0
 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);
     }
 }
コード例 #3
0
 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);
     }
 }