コード例 #1
0
 /**
  * @param $text      string
  * @param $option_id integer
  */
 protected function setRichtextOptions($text, $option_id)
 {
     // удаляем все значения с этим option_id
     $currentRichText = RichTexts::find()->where(['option_id' => $option_id])->one();
     if ($currentRichText) {
         //$currentRichText->updateAttributes(['text' => $text]);
         //var_dump($currentRichText->text);
         $currentRichText->text = $text;
         $currentRichText->save(false);
     } else {
         $richText = new RichTexts();
         $richText->option_id = $option_id;
         $richText->text = $text;
         $richText->save();
     }
 }
コード例 #2
0
 /** Render widget */
 public function run()
 {
     $model_name = MyHelper::modelFromNamespace($this->behavior->model_name);
     if ($this->behavior->getOptionsList() and is_array($this->behavior->getOptionsList())) {
         foreach ($this->model->optionsList as $optionList) {
             /**
              * @var $optionList OptionsList
              * @var $option     Options
              */
             $option = Options::findOne(['model' => $model_name, 'model_id' => $this->model->id, 'option_id' => $optionList->id]);
             $option_name = trim(str_replace(' ', '_', $optionList->alias));
             $value = $this->behavior->getOptionValueById($optionList->id);
             $option_type_alias = $optionList->type->alias;
             if ($option_type_alias == 'boolean') {
                 $this->options_string .= $this->render('@vendor/porcelanosa/yii2-options/views/_partials/_boolean', ['option_name' => $option_name, 'optionList' => $optionList, 'value' => $value]);
             }
             if ($option_type_alias == 'textinput') {
                 $this->options_string .= $this->render('@vendor/porcelanosa/yii2-options/views/_partials/_textinput', ['option_name' => $option_name, 'optionList' => $optionList, 'value' => $value]);
             }
             if ($option_type_alias == 'textarea') {
                 $textarea = $option ? RichTexts::find()->where(['option_id' => $option->id])->one() : null;
                 $this->options_string .= $this->render('@vendor/porcelanosa/yii2-options/views/_partials/_textarea', ['option_name' => $option_name, 'optionList' => $optionList, 'richTextValue' => $textarea != null ? $textarea->text : '']);
             }
             if ($option_type_alias == 'richtext') {
                 $richText = $option ? RichTexts::find()->where(['option_id' => $option->id])->one() : null;
                 $this->options_string .= $this->render('@vendor/porcelanosa/yii2-options/views/_partials/_rich_text', ['option_name' => $option_name, 'optionList' => $optionList, 'richTextValue' => $richText != null ? $richText->text : '', 'behavior' => $this->behavior]);
             }
             if ($option_type_alias == 'dropdown') {
                 // получаем фабрики
                 $status_preset_values = OptionPresetValues::find()->where(['preset_id' => $optionList->preset->id])->orderBy('sort')->all();
                 // формируем массив, с ключем равным полю 'id' и значением равным полю 'name'
                 $status_preset_items = ArrayHelper::map($status_preset_values, 'id', 'value');
                 $status_preset_items = ArrayHelper::merge(['null' => 'Выберите ' . mb_strtolower($optionList->name)], $status_preset_items);
                 $this->options_string .= $this->render('@vendor/porcelanosa/yii2-options/views/_partials/_dropdown', ['option_name' => $option_name, 'optionList' => $optionList, 'value' => $value, 'status_preset_items' => $status_preset_items]);
             }
             if ($option_type_alias == 'radiobuton_list') {
                 $value = $this->behavior->getOptionValueById($optionList->id);
                 // получаем фабрики
                 $status_preset_values = OptionPresetValues::find()->where(['preset_id' => $optionList->preset->id])->orderBy('sort')->all();
                 // формируем массив, с ключем равным полю 'id' и значением равным полю 'name'
                 $status_preset_items = ArrayHelper::map($status_preset_values, 'id', 'value');
                 $this->options_string .= '<label>&nbsp;' . $optionList->name . '</label>' . Html::radioList($option_name, $value ? $value : null, $status_preset_items, ['id' => $option_name, 'class' => 'form-control']);
             }
             if ($option_type_alias == 'dropdown-multiple') {
                 //  получаем список значений для мульти селектед
                 $multipleValuesArray = $option ? $this->behavior->getOptionMultipleValueByOptionId($option->id) : [];
                 // получаем фабрики
                 $status_preset_values = OptionPresetValues::find()->where(['preset_id' => $optionList->preset->id])->orderBy('sort')->all();
                 // формируем массив, с ключем равным полю 'id' и значением равным полю 'name'
                 $status_preset_items = ArrayHelper::map($status_preset_values, 'id', 'value');
                 $this->options_string .= $this->render('@vendor/porcelanosa/yii2-options/views/_partials/_dropdown_multiple', ['option_name' => $option_name, 'optionList' => $optionList, 'multipleValuesArray' => $multipleValuesArray, 'status_preset_items' => $status_preset_items]);
             }
             /*  checkbox list  */
             if ($option_type_alias == 'checkboxlist-multiple') {
                 //  получаем список значений для мульти селектед
                 // а если нет - возвращаем пустой массив
                 $multipleValuesArray = $option ? $this->behavior->getOptionMultipleValueByOptionId($option->id) : [];
                 // получаем список предустановленных значений
                 $status_preset_values = OptionPresetValues::find()->where(['preset_id' => $optionList->preset->id])->orderBy('sort')->all();
                 // формируем массив, с ключем равным полю 'id' и значением равным полю 'name'
                 $status_preset_items = ArrayHelper::map($status_preset_values, 'id', 'value');
                 $this->options_string .= $this->render('@vendor/porcelanosa/yii2-options/views/_partials/_checkboxlist_multiple', ['option_name' => $option_name, 'optionList' => $optionList, 'multipleValuesArray' => $multipleValuesArray, 'status_preset_items' => $status_preset_items]);
             }
             /*  IMAGE Изображение */
             if ($option_type_alias == 'image') {
                 $this->options_string .= $this->render('@vendor/porcelanosa/yii2-options/views/_partials/_image', ['option_name' => $option_name, 'optionList' => $optionList, 'value' => $value, 'this_widget' => $this, 'behavior' => $this->behavior]);
             }
         }
     }
     $view = $this->getView();
     OptionsAsset::register($view);
     //$view->registerJs("$('#{$this->id}').galleryManager({$opts});");
     $this->options['id'] = 'opt-widget-' . $this->model->id;
     $this->options['class'] = 'options';
     return $this->render('optionsWidget', ['options_string' => $this->options_string]);
 }