<?php use yii\helpers\Html; use yii\bootstrap\ActiveForm; use yii\helpers\ArrayHelper; use backend\models\Workflow; use backend\models\Cm; use backend\models\Node; use backend\assets\AutoCompleteAsset; /* @var $this yii\web\View */ /* @var $model backend\models\Node */ /* @var $form yii\widgets\ActiveForm */ AutoCompleteAsset::register($this); $root = Node::find()->where(['site_id' => $site_id])->one(); $leaves = $root->children()->andFilterWhere(['>', 'status', 0])->all(); $data = []; $data[] = ['data' => $root->id, 'value' => '┣' . $root->id . '|' . $root->name]; foreach ($leaves as $leaf) { $data[] = ['data' => $leaf->id, 'value' => '┣' . str_repeat('━', $leaf->depth) . $leaf->id . '|' . $leaf->name]; } $data = json_encode($data, JSON_UNESCAPED_UNICODE); ?> <div class="node-form"> <?php $form = ActiveForm::begin(['layout' => 'horizontal', 'fieldConfig' => ['template' => "{label}\n{beginWrapper}\n{input}\n{hint}\n{error}\n{endWrapper}", 'horizontalCssClasses' => ['label' => 'col-lg-2', 'wrapper' => 'col-lg-8', 'error' => 'col-lg-8', 'hint' => 'col-lg-8']]]); ?> <?php echo $form->field($model, 'site_id')->hiddenInput()->label(false);
/** * Creates a new Node model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed */ public function actionCreate($site_id) { $model = new Node(); $site = Site::findOne($site_id); $model->site_id = $site->id; $hasRoot = Node::find()->where(["site_id" => $site->id])->count(); $siteRoot = null; $model->is_real = 1; $model->scenario = 'create'; if ($hasRoot == 0) { $siteRoot = new Node(['site_id' => $site->id, 'name' => $site->name, 'cm_id' => 1, 'is_real' => 1, 'workflow' => 1, 'slug' => '', 'tpl_index' => 'index']); $siteRoot->makeRoot(); } else { $siteRoot = Node::find()->where(["site_id" => $site->id])->roots()->one(); } $model->parent = $siteRoot->id; if ($model->load(Yii::$app->request->post()) && $model->validate()) { $root = Node::findOne($model->parent); $result = $model->appendTo($root); if ($result) { return $this->redirect(['view', 'id' => $model->id]); } else { return $this->render('create', ['model' => $model, 'site' => $site]); } } else { return $this->render('create', ['model' => $model, 'site' => $site]); } }