[ [ 'heritage_type' => ['Вид наследсво', 'c3', ObjectTemplate::heritageTypes()], 'name' => ['Наименование', 'c2'], ], ], 'top' => [ 'title' => 'Видове обекти', 'data' => [ 'index/dashboard' => 'Начало', 'nomenclature/categories' => 'Номенклатури', ] ], 'actions' => [ 'new' => 'Нов вид обект', 'edit' => 'Редакция на вид обект', 'delete' => 'Изтриване на вид обект' ], 'th' => [ '№' => 'c0 text-right', 'Наименование на вид обект' => '', 'Вид наследсво' => '', 'Категории' => '', 'Полета' => '' ], 'data' => ObjectTemplate::find()->andWhere(Yii::$app->getFilterData('or'))->orderBy(['id' => SORT_DESC])->loop([ 'id', function (ObjectTemplate $model) { return '' . $model->name . ''; }, function (ObjectTemplate $model) { if ($model->heritage_type) return ObjectTemplate::heritageTypes($model->heritage_type); }, function (ObjectTemplate $model) { return $model->categoryConcatList; }, function (ObjectTemplate $model) { if (!empty($model->objectTemplateFields)) { $objectTemplateFields = []; foreach ($model->objectTemplateFields as $objectTemplateField) $objectTemplateFields[] = '' . $objectTemplateField->name . ''; return implode(' ', $objectTemplateFields); } } ], $_GET['p'] ?? 1, 30) ]); FormWidget::widget([ 'top' => [ 'title' => 'Нов вид обект', 'title_edit' => 'Редакция на вид обект', 'data' => [ 'index/dashboard' => 'Начало', 'nomenclature/categories' => 'Номенклатури', 'nomenclature/object-templates' => 'Видове обекти' ], ], 'tabs' => $tabs ?? [], 'writeView' => empty($_GET['id']) && empty($_GET['type']) ? "nomenclature/tabs/main/object_templates_w" : "nomenclature/tabs/" . Includes::tab($tab) . "/object_templates_w", 'model' => ObjectTemplate::class, 'validation' => function ($p) use ($tab) { if ($tab == 'main') { if (empty($p->{'name'})) return ["name" => 'Моля, въведете наименованието на вида обект']; if (empty($p->{'ts_en_name'})) return ["ts_en_name" => 'Моля, въведете наименованието на вида обект на английски']; if (empty($p->{'heritage_type'})) return ["heritage_type" => 'Моля, изберете вид наследство']; if (ObjectTemplate::exists(['name' => $p->{'name'}])) return ["name" => 'Обект с това наименование вече съществува']; if (ObjectTemplate::exists(['ts_en_name' => $p->{'ts_en_name'}])) return ["ts_en_name" => 'Обект с това наименование вече съществува']; if (isset($p->{'sub'})) { foreach ($p->{'sub'} as $indexId => $value) { if (empty($p->{'sub'}{$indexId}{'name'})) return ["sub[$indexId][name]" => 'Моля, въведете наименование на полето']; if (empty($p->{'sub'}{$indexId}{'ts_en_name'})) return ["sub[$indexId][ts_en_name]" => 'Моля, въведете наименование на полето']; if (empty($p->{'sub'}{$indexId}{'user_interface_type'})) return ["sub[$indexId][user_interface_type]" => 'Моля, изберете тип на стойността']; } } } return null; }, 'postService' => function ($p, ObjectTemplate $model) { $model->setPostDataToModel(); $model->save(); if (!empty($p->{'sub'})) { foreach ($p->{'sub'} as $id => $name) { $objectTemplateField = empty($_GET['id']) ? new ObjectTemplateField() : ObjectTemplateField::findOne($id); $objectTemplateField->ot_id = $model->id; $objectTemplateField->name = $name['name']; $objectTemplateField->ts_en_name = $name['ts_en_name']; $objectTemplateField->is_filter = empty($name['is_filter']) ? null : 1; $objectTemplateField->user_interface_type = $name['user_interface_type']; $userInterfaceTypeId = (int)$name['user_interface_type']; if ($userInterfaceTypeId != 0) { $objectTemplateField->common_field_id = $name['user_interface_type']; } else { $objectTemplateField->common_field_id = null; } //$objectTemplateField->data_type = $name['data_type']; if (empty($_GET['id'])) $objectTemplateField->order_index = ObjectTemplateField::getNextOrderIndex($model->id); $objectTemplateField->save(); if (empty($_GET['id']) && !empty($name['select_data'])) { foreach (json_decode($name['select_data']) as $stdObject) { $objectTemplateFieldOption = new ObjectTemplateField(); if (isset($stdObject->{'bg'})) $objectTemplateFieldOption->name = $stdObject->{'bg'}; if (isset($stdObject->{'en'})) $objectTemplateFieldOption->ts_en_name = $stdObject->{'en'}; if ($objectTemplateFieldOption->name) { $objectTemplateFieldOption->parent_id = $objectTemplateField->id; $objectTemplateFieldOption->save(); } } } } } History::addNew($model->id, 'object_template', Auth::userAdminGlobal()->getFullName() . ' - Глобален администратор', !empty($_GET['id'])); Yii::$app->flash('success', isset($_GET['id']) ? 'Вида обект е актуализирана успешно' : 'Вида обект е създадена успешно'); $model->smartRedirect(); } ]);