/** * Creates a new OptionsList model. * If creation is successful, the browser will be redirected to the 'view' page. * * @return mixed */ public function actionCreate() { $model = new OptionsList(); $preset_id = null; if (Yii::$app->request->isPost) { $type_id = Yii::$app->request->post()['OptionsList']['type_id']; if ($type_id) { /** * @var $option_type OptionTypes * @var $preset OptionPresets */ $option_type = OptionTypes::find()->where(['id' => $type_id])->one(); if ($option_type) { $type_alias = $option_type->alias; if (in_array($type_alias, ArrayHelper::merge(MyHelper::TYPES_WITH_PRESET_ARRAY, MyHelper::TYPES_WITH_MULTIPLE_PRESET_ARRAY))) { $preset = new OptionPresets(); $preset->save(); $preset_id = $preset->id; } } } } $appUrl = '/backend/'; if ($model->load(Yii::$app->request->post()) && $model->save()) { if ($preset_id) { $model->preset_id = $preset_id; $model->save(); } return $this->redirect(['update', 'id' => $model->id]); } else { return $this->render('create', ['model' => $model, 'appUrl' => $appUrl]); } }
/** * Finds the OptionTypes model based on its primary key value. * If the model is not found, a 404 HTTP exception will be thrown. * @param integer $id * @return OptionTypes the loaded model * @throws NotFoundHttpException if the model cannot be found */ protected function findModel($id) { if (($model = OptionTypes::findOne($id)) !== null) { return $model; } else { throw new NotFoundHttpException('The requested page does not exist.'); } }
/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = OptionTypes::find(); // add conditions that should always apply here $dataProvider = new ActiveDataProvider(['query' => $query]); $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails // $query->where('0=1'); return $dataProvider; } // grid filtering conditions $query->andFilterWhere(['id' => $this->id, 'sort' => $this->sort]); $query->andFilterWhere(['like', 'name', $this->name])->andFilterWhere(['like', 'alias', $this->alias])->andFilterWhere(['like', 'active', $this->active]); return $dataProvider; }
} } ?> <div class="row"> <div class="col-md-7"> <div class="row"> <div class="col-md-6"> <?php echo $form->field($model, 'name')->textInput(['maxlength' => true]); ?> </div> <div class="col-md-6"> <?php // получаем Типы параметров $option_types = \porcelanosa\yii2options\models\OptionTypes::find()->all(); // формируем массив, с ключем равным полю 'id' и значением равным полю 'name' $option_types_items = ArrayHelper::map($option_types, 'id', 'name'); ?> <?php echo $form->field($model, 'type_id')->dropDownList($option_types_items, ['prompt' => 'Выберите тип поля']); ?> <!--<hr class="clearfix">--> </div> </div> <div class="row"> <div class="col-md-6"> <?php echo $form->field($model, 'alias')->textInput(['maxlength' => true]); ?> <?php
/** * @return \yii\db\ActiveQuery */ public function getType() { return $this->hasOne(OptionTypes::className(), ['id' => 'type_id']); }
return $ops; //return \yii\helpers\ArrayHelper::map($options, 'model', 'name'); } ?> <?php Pjax::begin(); ?> <?php echo GridView::widget(['dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'pjax' => false, 'bordered' => true, 'striped' => false, 'condensed' => false, 'responsive' => true, 'hover' => true, 'export' => false, 'layout' => "{pager}\n{summary}\n{items}\n{summary}\n{pager}", 'columns' => [['attribute' => 'name'], ['attribute' => 'model', 'content' => function ($data) { // формируем полное имя модели с namspace /*$mn = MyHelper::ADMIN_MODEL_NAMESPACE.$data->model; $m = new $mn();*/ if ($data->model) { if (!preg_match('/\\-/', $data->model)) { return MyHelper::getModelFrontName($data->model); } else { return MyHelper::getComplexModelChildName($data->model); } } else { return Yii::t('app', 'NOT_MODEL'); } }, 'filter' => getModelsNameArray()], ['header' => 'Тип данных', 'attribute' => 'type_id', 'content' => function ($data) { $type = OptionTypes::find()->where(['id' => $data->type_id])->one(); return $type->name; }], ['class' => 'kartik\\grid\\EditableColumn', 'attribute' => 'sort', 'editableOptions' => ['header' => 'Порядок', 'inputType' => \kartik\editable\Editable::INPUT_SPIN, 'options' => ['pluginOptions' => ['min' => 0, 'max' => 5000]], 'formOptions' => ['action' => ['/options/optionslist/editsort']]], 'hAlign' => 'right', 'vAlign' => 'middle', 'width' => '100px', 'format' => ['decimal', 0]], ['class' => 'porcelanosa\\yii2togglecolumn\\ToggleColumn', 'attribute' => 'active', 'enableAjax' => true, 'header' => 'Показывать', 'contentOptions' => ['style' => 'width:120px; text-align: center;'], 'headerOptions' => ['class' => 'kartik-sheet-style']], ['class' => 'yii\\grid\\ActionColumn', 'header' => 'Действия', 'headerOptions' => ['width' => '100'], 'contentOptions' => ['style' => 'width:100px; text-align: center;'], 'template' => '{update} {delete}']]]); ?> <?php Pjax::end(); ?> </div>