public function actionItogovyj() { if (isset($_GET['vp']) and $vremya_provedeniya = $_GET['vp'] and isset($_GET['d']) and $dolzhnost = $_GET['d']) { $data = \Yii::$app->db->createCommand('select * from attestaciya_itogovij_otchet(:vp,:d) order by case when otraslevoe_soglashenie is null then 0 else 1 end desc, na_kategoriyu DESC, imeushayasya_kategoriya DESC, attestaciya_data_prisvoeniya DESC, fio')->bindValue(':vp', $vremya_provedeniya)->bindValue(':d', $dolzhnost)->queryAll(); $groups = ['otraslevoe_soglashenie' => []]; foreach ($data as $item) { if ($item['na_kategoriyu'] == KategoriyaPedRabotnika::VYSSHAYA_KATEGORIYA and $item['otraslevoe_soglashenie']) { $groups['otraslevoe_soglashenie'][] = $item; } else { $groups[$item['na_kategoriyu']][] = $item; } } $data = $groups; $content = $this->renderPartial('itogovyj-report', compact('data')); $indent = 3; $css = ' body{ font-family:"Times New Roman","serif"; } .paragraph{ text-align:justify; margin-bottom: 5px; margin-top: 5px; } .center{ text-align:center; } .tb {border-collapse: collapse} .tb td {padding: 5px;border: 1px solid #000} .inline-block{ display: inline-block; } .indent{padding-left: ' . $indent . 'em} .double-indent{padding-left: ' . 2 * $indent . 'em} .indent-block{ margin-left: ' . $indent . 'em; } .bold{ font-weight: bold; } '; $pdf = new Pdf(['mode' => Pdf::MODE_UTF8, 'format' => Pdf::FORMAT_A4, 'orientation' => Pdf::ORIENT_LANDSCAPE, 'destination' => Pdf::DEST_BROWSER, 'content' => $content, 'cssFile' => '@vendor/kartik-v/yii2-mpdf/assets/kv-mpdf-bootstrap.min.css', 'cssInline' => $css, 'options' => ['title' => 'Отчет для к заседанию комиссии'], 'methods' => ['SetFooter' => ['']]]); // return the pdf output as per the destination setting return $pdf->render(); } else { $dolzhnosti = Dolzhnost::getDolzhnostiAttestacii(); return $this->render('itogovyj', compact('dolzhnosti')); } }
public function addDolzhnost() { $organizaciya = $this->organizaciyaId ? Organizaciya::findOne($this->organizaciyaId) : new Organizaciya(['nazvanie' => $this->organizaciyaNazvanie, 'vedomstvo' => $this->organizaciyaVedomstvo, 'adresAdresnyjObjekt' => $this->organizaciyaVedomstvo, 'obschij' => false]); if (!$organizaciya->validate()) { return false; } if ($this->organizaciyaId) { $rabotaFizLica = RabotaFizLica::findOne(['fiz_lico' => $this->fizLicoId, 'organizaciya' => $this->organizaciyaId]); } else { $rabotaFizLica = null; } if (!$rabotaFizLica) { $rabotaFizLica = new RabotaFizLica(['fiz_lico' => $this->fizLicoId]); } if (!$rabotaFizLica->validate()) { return false; } $dolzhnost = $this->dolzhnostId ? Dolzhnost::findOne($this->dolzhnostId) : new Dolzhnost(['nazvanie' => $this->dolzhnostNazvanie, 'tip' => 'inaya', 'obschij' => false]); try { DolzhnostFizLicaNaRabote::getDb()->transaction(function () use($organizaciya, $rabotaFizLica, $dolzhnost) { $organizaciya->save(false); $dolzhnost->save(false); $rabotaFizLica->link('organizaciyaRel', $organizaciya); $dolzhnostFizLica = new DolzhnostFizLicaNaRabote(['dolzhnost' => $dolzhnost->id, 'etapObrazovaniya' => $this->etapObrazovaniya]); $dolzhnostFizLica->link('rabotaFizLicaRel', $rabotaFizLica); }); } catch (Exception $e) { return false; } return ['rabota_fiz_lica_id' => $rabotaFizLica->id, 'dolhnost' => $dolzhnost->nazvanie . ', ' . $organizaciya->nazvanie]; }
public function validateAttribute($model, $attribute) { if ($model->organizaciyaId) { if (!$model->dolzhnostNazvanie and !$model->dolzhnostId) { $this->addError($model, $attribute, 'Выберите должность'); } else { if ($model->dolzhnostId) { $dolzhnost = Dolzhnost::getDolzhnostFizLica($model->fizLicoId, $model->{$attribute}, $model->organizaciyaId)->one(); if ($dolzhnost) { $this->addError($model, $attribute, 'Данная должность уже присутствует в списке'); } } } } }
public function actionVarIsp() { if (isset($_GET['vp']) and $vremya_provedeniya = $_GET['vp']) { $ispytaniya = AttestacionnoeVariativnoeIspytanie_3::find()->orderBy('nazvanie')->all(); $sql = "SELECT\n t.var_ispytanie_3, t.dolzhnost_id, t.dolzhnost_nazvanie,\n SUM(CASE WHEN t.count_bally_below_min = 0 THEN 1 ELSE 0 end) as reccomended,\n SUM(CASE WHEN t.count_bally_below_min > 0 THEN 1 ELSE 0 end) as notreccomended\n FROM\n (\n SELECT\n z.id as zayavlenie_id, z.var_ispytanie_3, d.id as dolzhnost_id, d.nazvanie as dolzhnost_nazvanie,\n count_bally_below_min(z.id)\n FROM zayavlenie_na_attestaciyu AS z\n INNER JOIN dolzhnost AS d ON z.rabota_dolzhnost = d.id\n WHERE z.status = 'podpisano_otdelom_attestacii' AND z.vremya_provedeniya = :vp AND z.var_ispytanie_3 IS NOT NULL\n ) AS t\n GROUP BY t.var_ispytanie_3, t.dolzhnost_id, t.dolzhnost_nazvanie\n ORDER BY t.dolzhnost_nazvanie"; $data = \Yii::$app->db->createCommand($sql)->bindValue(':vp', $vremya_provedeniya)->queryAll(); $report = []; foreach ($data as $item) { if (!isset($report[$item['dolzhnost_id']])) { $report[$item['dolzhnost_id']] = ['dolzhnost_nazvanie' => $item['dolzhnost_nazvanie'], 'var_isp' => []]; } $report[$item['dolzhnost_id']]['var_isp'][$item['var_ispytanie_3']] = ['reccomended' => $item['reccomended'], 'notreccomended' => $item['notreccomended']]; } $vremya = VremyaProvedeniyaAttestacii::findOne($vremya_provedeniya); $content = $this->renderPartial('var-isp.php', compact('vremya', 'report', 'ispytaniya')); $pdf = new Pdf($this->getPdfSeetings($content)); // return the pdf output as per the destination setting return $pdf->render(); } else { $dolzhnosti = Dolzhnost::getDolzhnostiAttestacii(); return $this->render('var-isp-form.php'); } }
private function populateByudzhetImpl() { $fiz_lico = FizLico::findOne($this->fizLico); if ($fiz_lico) { $this->pedStazh = $fiz_lico->pedStazh; } $rabota_fiz_lica = RabotaFizLica::find()->where(['fiz_lico' => $this->fizLico])->orderBy('id')->one(); $dolzhnost_fiz_lica_na_rabote = $rabota_fiz_lica ? DolzhnostFizLicaNaRabote::find()->where(['rabota_fiz_lica' => $rabota_fiz_lica->id])->orderBy('id')->one() : null; if ($dolzhnost_fiz_lica_na_rabote) { list($this->dolzhnostId, $this->dolzhnostNazvanie) = DirectoryHelper::getForCombo(Dolzhnost::findOne($dolzhnost_fiz_lica_na_rabote->dolzhnost)); } if ($dolzhnost_fiz_lica_na_rabote && ($stazh_v_dolzhnosti = StazhFizLica::findOne(['fiz_lico' => $this->fizLico, 'dolzhnost' => Val::of($dolzhnost_fiz_lica_na_rabote, 'dolzhnost')]))) { $this->stazhVDolzhnosti = $stazh_v_dolzhnosti->stazh; } if ($attestaciya_fiz_lica = $fiz_lico->attestaciyaFizLicaRel) { $this->kategoriya = $attestaciya_fiz_lica->kategoriya; } if ($obrazovanie_fiz_lica = ObrazovanieFizLica::find()->where(['fiz_lico' => $this->fizLico])->orderBy('id')->one()) { list($this->obrOrgId, $this->obrOrgNazvanie) = DirectoryHelper::getForCombo(Organizaciya::findOne($obrazovanie_fiz_lica->organizaciya)); list($this->obrKvalifikaciyaId, $this->obrKvalifikaciyaNazvanie) = DirectoryHelper::getForCombo(Kvalifikaciya::findOne($obrazovanie_fiz_lica->kvalifikaciya)); $this->obrDocTip = $obrazovanie_fiz_lica->dokumentObObrazovaniiTip; $this->obrDocSeriya = $obrazovanie_fiz_lica->dokumentObObrazovaniiSeriya; $this->obrDocNomer = $obrazovanie_fiz_lica->dokumentObObrazovaniiNomer; $this->obrDocData = DeprecatedDatePicker::fromDatetime($obrazovanie_fiz_lica->dokumentObObrazovaniiDataAsDate); } return $fiz_lico; }
private function registerImpl() { if (!$this->validate()) { return false; } $fiz_lico = new FizLico(['familiya' => $this->familiya, 'imya' => $this->imya, 'otchestvo' => $this->otchestvo, 'email' => $this->email, 'formattedTelefon' => $this->telefon]); $polzovatel = new Polzovatel(['login' => $this->login, 'parol' => $this->parol, 'aktiven' => true, 'roliAsArray' => $this->roli]); $polzovatel->generateKlyuchAutentifikacii(); $polzovatel->generateKodPodtverzhdeniyaEmail(); list($organizaciya, $organizaciya_to_delete) = DirectoryHelper::getFromCombo(Organizaciya::className(), $this->rabotaOrgId, $this->rabotaOrgNazvanie, ['vedomstvo' => $this->rabotaOrgVedomstvo, 'adres_adresnyj_objekt' => $this->rabotaOrgAdres]); $rabota_fiz_lica = new RabotaFizLica(['formattedTelefon' => $this->rabotaTelefon]); list($dolzhnost, $dolzhnost_to_delete) = DirectoryHelper::getFromCombo(Dolzhnost::className(), $this->rabotaDolzhnostId, $this->rabotaDolzhnostNazvanie, null); $dolzhnost_fiz_lica_na_rabote = new DolzhnostFizLicaNaRabote(['etapObrazovaniyaAsEnum' => $this->rabotaEtapObrazovaniya]); $message = Yii::$app->mailer->compose('kadry/registraciya.php', ['model' => $this, 'polzovatel' => $polzovatel])->setTo($fiz_lico->email); if (!$message->send()) { $this->addError('email', 'Не удалось отправить E-Mail.'); return false; } $transaction = Yii::$app->db->beginTransaction(); try { $fiz_lico->save(false); $polzovatel->link('fizLicoRel', $fiz_lico); $polzovatel->save(false); if ($organizaciya) { $organizaciya->save(false); } $rabota_fiz_lica->fizLico = $fiz_lico->id; $rabota_fiz_lica->link('organizaciyaRel', $organizaciya); $rabota_fiz_lica->save(false); if ($dolzhnost) { $dolzhnost->save(false); } $dolzhnost_fiz_lica_na_rabote->dolzhnost = $dolzhnost->id; $dolzhnost_fiz_lica_na_rabote->link('rabotaFizLicaRel', $rabota_fiz_lica); $dolzhnost_fiz_lica_na_rabote->save(false); if ($organizaciya_to_delete) { $organizaciya_to_delete->delete(); } if ($dolzhnost_to_delete) { $dolzhnost_to_delete->delete(); } $transaction->commit(); } catch (\Exception $e) { $transaction->rollBack(); throw $e; } return true; }
private function createDataProvider($commonFlag) { return new ActiveDataProvider(['query' => Dolzhnost::find()->where(['obschij' => $commonFlag])->orderBy('nazvanie'), 'key' => 'hashids', 'pagination' => false, 'sort' => false]); }
<span class="glyphicon glyphicon-ok-circle"></span> </button> <button title="Отменить изменения" ng-show="item.is_edit" type="button" class="btn btn-default tool-btn" ng-click="komissii.banChanges(item);"> <span class="glyphicon glyphicon-ban-circle"></span> </button> </td> </tr> </table> </div> <div ng-controller="DolzhnostiListController as dolzhnosti" class="col-md-6" ng-show="dolzhnosti.selected_komissiya.id"> <form ng-submit="dolzhnosti.addDolzhnost()" class="form-inline"> <div class="inline-block valign-middle" style="width:80%"> <?php echo kartik\select2\Select2::widget(['name' => 'dolzhnosti', 'data' => \app\entities\Dolzhnost::find()->orderBy('nazvanie')->where('obschij')->formattedAll(\app\entities\EntityQuery::DROP_DOWN, 'nazvanie'), 'options' => ['placeholder' => 'Выберите должность', 'class' => 'form-control', 'ng-model' => 'dolzhnosti.dolzhnost', 'id' => 'dolzhnosti_select']]); ?> </div> <button class="btn btn-primary">Добавить</button> </form> <br> <table class="att-tb" style="width: 100%"> <tr class="thead"> <td style="width: 80%">Название</td> <td></td> </tr> <tr ng-repeat="item in dolzhnosti.list | orderBy:nazvanie"> <td> <span class="rabotnik{{item.id}}">{{item.nazvanie}}</span> </td> <td class="center">
</div> <?php echo $form->field($model, 'rabotaOrgVedomstvo')->widget(Select2::classname(), ['data' => Vedomstvo::find()->formattedAll(EntityQuery::DROP_DOWN, 'nazvanie')]); ?> <?php echo $form->field($model, 'rabotaOrgAdres')->widget(Select2::classname(), ['data' => AdresnyjObjekt::findBurRajon()->commonOnly()->formattedAll(EntityQuery::DROP_DOWN, 'formalnoeNazvanie')]); ?> <?php echo SwitchingFields::widget(['commonOptions' => ['form' => $form, 'model' => $model, 'options' => ['template' => "{label}\n<div class=\"col-md-8\">\n{input}\n{hint}\n{error}\n{switch}\n</div>", 'options' => ['class' => 'form-group']]], 'field1Options' => ['attribute' => 'rabotaOrgId', 'switchIntroText' => 'Не нашли в списке?', 'switchLinkText' => 'Нажмите здесь чтобы ввести организацию вручную.', 'widgetClass' => DepDrop::classname(), 'widgetConfig' => ['type' => DepDrop::TYPE_SELECT2, 'data' => [$model->rabotaOrgId => null], 'pluginOptions' => ['depends' => [Html::getInputId($model, 'rabotaOrgVedomstvo'), Html::getInputId($model, 'rabotaOrgAdres')], 'loadingText' => 'Загрузка организаций...', 'initialize' => true, 'placeholder' => 'Выберите образовательную организацию', 'url' => Url::to(['kadry/rabota-org'])]], 'widgetConfigDisabled' => ['disabled' => true]], 'field2Options' => ['attribute' => 'rabotaOrgNazvanie', 'switchIntroText' => 'Возможно ваша организация есть в списке.', 'switchLinkText' => 'Нажмите здесь чтобы найти её в списке.']]); ?> <?php echo SwitchingFields::widget(['commonOptions' => ['form' => $form, 'model' => $model, 'options' => ['template' => "{label}\n<div class=\"col-md-8\">\n{input}\n{hint}\n{error}\n{switch}\n</div>", 'options' => ['class' => 'form-group']]], 'field1Options' => ['attribute' => 'rabotaDolzhnostId', 'switchIntroText' => 'Не нашли в списке?', 'switchLinkText' => 'Нажмите здесь чтобы ввести должность вручную.', 'widgetClass' => Select2::className(), 'widgetConfig' => ['data' => Dolzhnost::find()->commonOnly()->formattedAll(EntityQuery::DROP_DOWN, 'nazvanie')], 'widgetConfigDisabled' => ['disabled' => true]], 'field2Options' => ['attribute' => 'rabotaDolzhnostNazvanie', 'switchIntroText' => 'Возможно ваша должность есть в списке.', 'switchLinkText' => 'Нажмите здесь чтобы найти её в списке.']]); ?> <?php echo $form->field($model, 'rabotaEtapObrazovaniya')->widget(Select2::className(), ['data' => EtapObrazovaniya::namesMap()]); ?> <?php echo $form->field($model, 'rabotaTelefon')->widget(MaskedInput::className(), ['mask' => '+79999999999']); ?> <div class="fields-group-heading"> <h3>Роли пользователя в системе</h3> </div> <?php
<div class="filters" style="<?php echo $filter_display; ?> background: #eee;padding: 5px;border-radius:5px;margin-bottom:10px;" id="filters"> <?php $form = ActiveForm::begin(['method' => 'get', 'action' => [Yii::$app->controller->id . '/' . Yii::$app->controller->action->id]]); ?> <div class="row" style=""> <div class="col-md-3"> <?php echo $form->field($filterModel, 'vreamyaProvedeniya')->widget(Select2::className(), ['data' => \app\entities\VremyaProvedeniyaAttestacii::getItemsToSelect(), 'options' => ['multiple' => 'true']]); ?> <?php echo $form->field($filterModel, 'dolzhnost')->widget(Select2::className(), ['data' => Dolzhnost::find()->formattedAll(EntityQuery::DROP_DOWN, 'nazvanie'), 'options' => ['placeholder' => 'Выберите должность', 'multiple' => true]]); ?> </div> <div class="col-md-3"> <?php echo $form->field($filterModel, 'varIspytanie2')->widget(Select2::className(), ['data' => \app\entities\AttestacionnoeVariativnoeIspytanie_2::find()->formattedAll(EntityQuery::DROP_DOWN, 'nazvanie'), 'options' => ['multiple' => true]]); ?> <?php echo $form->field($filterModel, 'varIspytanie3')->widget(Select2::className(), ['data' => \app\entities\AttestacionnoeVariativnoeIspytanie_2::find()->formattedAll(EntityQuery::DROP_DOWN, 'nazvanie'), 'options' => ['multiple' => true]]); ?> </div> <div class="col-md-3"> <?php echo $form->field($filterModel, 'kategoriya')->widget(Select2::className(), ['data' => \app\enums\KategoriyaPedRabotnika::namesOnlyPositive(), 'options' => ['multiple' => true]]); ?> <?php
public function getDolzhnostUchitelRel() { return $this->hasOne(Dolzhnost::className(), ['id' => 'dolzhnost_uchitel'])->inverseOf('znachenieIdentifikatoraDolzhnostiUchitelRel'); }
public function actionAddDolzhnostToKomissiya() { \Yii::$app->response->format = Response::FORMAT_JSON; $existed_dolzhnost = DolzhnostAttestacionnojKomissii::find()->where(['attestacionnaya_komissiya' => $_REQUEST['komissiya_id'], 'dolzhnost' => $_REQUEST['dolzhnost_id']])->one(); if (!$existed_dolzhnost) { $new_dolzhnost_v_komissii = new DolzhnostAttestacionnojKomissii(); $new_dolzhnost_v_komissii->attestacionnaya_komissiya = $_REQUEST['komissiya_id']; $new_dolzhnost_v_komissii->dolzhnost = $_REQUEST['dolzhnost_id']; if ($new_dolzhnost_v_komissii->validate() && $new_dolzhnost_v_komissii->save()) { $dolzhnost = Dolzhnost::findOne($new_dolzhnost_v_komissii->dolzhnost); return ['type' => 'success', 'data' => $dolzhnost]; } else { return ['type' => 'error', 'msg' => 'Ошибка при сохранении данных']; } } else { return ['type' => 'error', 'msg' => 'Выбранная должность уже добавлена']; } }
public function getDolzhnostRel() { return $this->hasOne(Dolzhnost::className(), ['id' => 'rabota_dolzhnost'])->inverseOf('zayavlenieNaAttestaciyuRel'); }
use yii\helpers\Url; use app\entities\Dolzhnost; use app\enums\EtapObrazovaniya; use Yii; use app\widgets\Select3; $form = ActiveForm::begin(['id' => 'dolzhnostForm', 'options' => ['tabindex' => false]]); echo $form->field($model, 'fizLicoId')->hiddenInput()->label(false); echo $form->field($model, 'organizaciyaAdress')->widget(Select2::className(), ['data' => AdresnyjObjekt::findBurRajon()->commonOnly()->formattedAll(EntityQuery::DROP_DOWN, 'formalnoeNazvanie'), 'options' => ['placeholder' => 'Выберите район / город']]); echo $form->field($model, 'organizaciyaVedomstvo')->widget(Select2::classname(), ['data' => Vedomstvo::find()->formattedAll(EntityQuery::DROP_DOWN, 'nazvanie'), 'options' => ['placeholder' => 'Выберите ведомство']]); echo '<label>Организация</label>'; echo Html::hiddenInput('', $model->organizaciyaId, ['id' => 'organizaciyaIdHiddenInput']); $depdropUrl = '/attestaciya/rabota-org' . ($model->organizaciyaId ? '?oid=' . $model->organizaciyaId : ''); echo $form->field($model, 'organizaciyaId')->widget(DepDrop::classname(), ['type' => DepDrop::TYPE_SELECT2, 'pluginOptions' => ['depends' => [Html::getInputId($model, 'organizaciyaVedomstvo'), Html::getInputId($model, 'organizaciyaAdress')], 'placeholder' => 'Выберите школу', 'url' => Url::to([$depdropUrl]), 'initialize' => true, 'allowClear' => true], 'pluginEvents' => ['change' => 'function (){ var organizaciyaIdInput = \'' . Html::getInputId($model, 'organizaciyaId') . '\'; var organizaciyaNazvanieInput = \'' . Html::getInputId($model, 'organizaciyaNazvanie') . '\'; if ($(\'#\'+organizaciyaIdInput).val()){ $(\'#\'+organizaciyaNazvanieInput).val(""); } }']])->label(false); echo '<p>Не нашли организацию в списке? <span class="slink" onclick="showOrganizaciyaNazvanie(\'' . Html::getInputId($model, 'organizaciyaNazvanie') . '\')">ввести наименование организации вручную</span></p>'; echo $form->field($model, 'organizaciyaNazvanie')->input('text', ['class' => 'hidden form-control', 'placeholder' => 'Наименование организации', 'onkeyup' => 'onOrganizaciyaNazvanieKeyUp(\'' . Html::getInputId($model, 'organizaciyaId') . '\',this.value,event)'])->label(false); //echo $form->field($model,'dolzhnostId')->widget(Select2::className(),[ // 'data' => Dolzhnost::getObshieDolzhnosti()->orderBy('nazvanie')->formattedAll(EntityQuery::DROP_DOWN, 'nazvanie'), // 'options' => ['placeholder' => 'Выберите должность'], //]); echo Select3::widget(['model' => $model, 'attribute' => "dolzhnostId", 'secondAttribute' => "dolzhnostNazvanie", 'data' => Dolzhnost::getObshieDolzhnosti()->orderBy('nazvanie')->formattedAll(EntityQuery::DROP_DOWN, 'nazvanie'), 'placeholder' => 'Выберите должность', 'secondPlaceholder' => 'Введите наименование должности']); //dolzhnostNazvanie echo $form->field($model, 'etapObrazovaniya')->widget(Select2::className(), ['data' => EtapObrazovaniya::namesMap(), 'options' => ['placeholder' => 'Выберите уровень образования']]); echo '<button class="btn btn-default" onclick="close_modal()">Закрыть</button> <button class="btn btn-primary">Сохранить</button>'; ActiveForm::end();
/** * @param $dolzh Dolzhnost * @param $newDolzh Dolzhnost */ private function relinkRelations($dolzh, $newDolzh) { foreach (Dolzhnost::relations() as $relation) { $relationQuery = $dolzh->getRelation($relation); foreach ($relationQuery->each() as $rec) { $rec->link($relationQuery->inverseOf, $newDolzh); } } }
public function getDolzhnostRel() { return $this->hasOne(Dolzhnost::className(), ['id' => 'dolzhnost'])->inverseOf('dolzhnostiFizLicNaRabotahRel'); }
use app\models\lichnye_dannye_dolzhnost\DolzhnostForm; use app\widgets\ComboWidget; use app\widgets\TouchSpin; use yii\bootstrap\ActiveForm; use yii\helpers\Html; /** * @var $model DolzhnostForm */ ?> <?php $form = ActiveForm::begin(['layout' => 'horizontal']); ?> <?php echo $form->field($model, 'dolzhnostDir')->widget(ComboWidget::className(), ['data' => Dolzhnost::find()->commonOnly()->formattedAll(EntityQuery::DROP_DOWN, 'nazvanie')]); ?> <?php echo $form->field($model, 'org_tip')->dropDownList(OrgTipDolzhnosti::namesMap()); ?> <?php echo $form->field($model, 'etap_obrazovaniya')->dropDownList(EtapObrazovaniya::namesMap()); ?> <?php echo $form->field($model, 'stazh')->widget(TouchSpin::className()); ?> <?php