Exemplo n.º 1
0
 public static function getField($name)
 {
     $setting = Settings::find()->where('name = :name', [':name' => $name])->asArray()->one();
     if ($setting === null) {
         return false;
     }
     switch ($setting['type']) {
         // Repeater - повторяющееся поле
         case "repeater":
             $setting['value'] = $setting['value'] ? unserialize($setting['value']) : [];
             break;
             // File - поле для изображений и файлов
         // File - поле для изображений и файлов
         case "file":
             $setting['value'] = intval($setting['value']);
             break;
     }
     $settings[$setting['name']] = $setting;
     return $setting['value'];
 }
 public function actionManage($page = null)
 {
     if (Yii::$app->request->post()) {
         $positions = Yii::$app->request->post('position');
         if ($positions) {
             $i = 0;
             foreach ($positions as $key => $value) {
                 $i++;
                 $key = (int) $key;
                 if (!$key) {
                     continue;
                 }
                 $model = $this->findModel($key);
                 $model->position = $i;
                 $model->save(false);
             }
         }
         Yii::$app->session->setFlash('success-noty', 'Сортировка успешно обновлена');
         return $this->redirect(['manage']);
     }
     $module = null;
     if ($page && isset(Yii::$app->params['modules'][$page]) && Yii::$app->params['modules'][$page]['isSettingsPage']) {
         $module = $page;
     }
     $settings = Settings::find()->where(['module' => $module])->addOrderBy([new \yii\db\Expression('-position DESC')])->all();
     $output = [];
     if ($settings) {
         foreach ($settings as $item) {
             $output[] = ['content' => Yii::$app->controller->view->renderFile(Yii::$app->controller->viewPath . '\\manage-field.php', ['item' => $item]), 'options' => ['data-id' => $item->id, 'data-field' => $item->type != "tab" ? "notab" : "tab"]];
         }
     }
     return $this->render('manage', ['settings' => $output]);
 }