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); } }