/** * Gets widgets areas from data array. * * @param array $data * @param string $formName * @return WidgetArea[] */ protected function getWidgetAreas($data, $formName = null) { if ($formName === null) { $area = new WidgetArea(); $formName = $area->formName(); } $areas = []; if (!empty($data[$formName])) { $pks = []; foreach ($data[$formName] as $key => $areaData) { if (is_string($key)) { $areas[$key] = new WidgetArea(); } else { $pks[] = $key; } } if ($pks) { $areas = $areas + WidgetArea::find()->where(['id' => $pks])->indexBy('id')->all(); } } return $areas; }