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