Сохранение стандартных опций в админке

InstantCMS 2.X
#1 26 сентября 2020 в 18:55
Привет, в админке компонента по умолчанию есть настройки которые сохраняются в базе контроллера в options
Все здорово, но у меня тут задачка такая.., что бы не городить огород хочу изменить отправляемые данные в options

А при открывании настроек компонента проверить наличие заполненных данных..

Как такое можно реализовать?

В компоненте надо сохранить логин пароль (не в открытом виде), и если они там есть запросить другой сайт… а если нет не обращаться к нему.

И как мне получить данные в модели их options компонента?
#2 26 сентября 2020 в 19:09
Рачей,
А можно перевести всё это на русский (или английский) язык?
#3 26 сентября 2020 в 20:01
Делаю компонент .
1. Стандартная опция настроек из формы отправляется в базу в поле options Как можно зашифровать эти данные?
2. Как проверить приходящие данные в эту форму? То есть заполнено поле или нет?
#4 26 сентября 2020 в 20:16
Как получить опции в модели компонента? В админке они автоматом прилетают…
#5 26 сентября 2020 в 20:32

Как получить опции в модели компонента?

Рачей
Варианты:
1. Попробовать просто $options = $this->options;
2. Попробовать $options = $this->controller_вашконтроллер->options;
3. Попробовать $options = cmsCore::getController('вашконтроллер')->options;
#6 26 сентября 2020 в 20:53
Спасибо, это опробую… А как мне зашифровать данные при сохранении опций? А то не хочется пароль хранить в открытом виде…
#7 26 сентября 2020 в 21:11

А как мне зашифровать данные при сохранении опций?

Рачей
В смысле, требуется для каждого пользователя хранить пароль в опциях?
Или это компонент с подключением к стороннему сервису и нужен пароль для подключения к этому сервису?
А нет ли у того сервиса подключения по API? По password_hash?
Просто, всё, что просто шифруется типа Base64, легко и расшифровывается.
#8 26 сентября 2020 в 21:27
Да легко… тут просто хочется одной строкой держать и не писать каждый раз логин и пароль в модели..
Не для каждого… для одного… потому и хочу в опции засунуть…
#9 26 сентября 2020 в 21:28

1. Попробовать просто $options = $this->options;
2. Попробовать $options = $this->controller_вашконтроллер->options;
3. Попробовать $options = cmsCore::getController('вашконтроллер')->options;

Ris
Ни один вариант не подошёл… даже как-то странно…
#10 26 сентября 2020 в 21:54

Ни один вариант не подошёл… даже как-то странно..

Рачей
Итак. Давайте определимся, что есть опции.
Вариант, что опции — божья благодать разлитая по всему движку, отметаем, как антинаучный.
Если посмотреть во всех компонентах, то к этим опциям обращаются, как к массиву. Например:
'
  1. editor' => $this->options['editor']
Как нам получить этот массив?
Во-первых, нужно посмотреть, есть ли у данного контроллера опции.
Идем в базу данных — cms_controllers — строка, где name = вашконтроллер. Идем в колонку опции и смотрим, что там.
Например, в компоненте rating там вот такое содержимое:
  1. ---
  2. is_hidden: 1
  3. is_show: 1
  4. allow_guest_vote: null
  5. template: widget
То есть, если мы вызовем $this->controller_rating->options; то получим массив
Array ( [is_hidden] => 1 [is_show] => 1 [allow_guest_vote] => [template] => widget )

Включите отладку и в любом месте вашего компонента напишите
  1. print_r(cmsCore::getController('вашкомпонент')->options);
Результат сюда.
#11 26 сентября 2020 в 22:15
Да вот в том-то и дело что в настройках контроллера есть данные а print_r(cmsCore::getController('мой контроллер')->options); не выводит ничего😥
#12 26 сентября 2020 в 22:17
Попробовал другой контроллер, выдаёт данные… капец какой-то…
#13 26 сентября 2020 в 22:19
Рачей,
А Вы этот контроллер сами делали?
Есть ли вверху файла frontend.php вашего контроллера, после объявления класса, строка
  1. protected $useOptions = true;
  2.  
#14 26 сентября 2020 в 23:05
Сам
Строки нет…
#15 26 сентября 2020 в 23:07
Добавил, все заработало. Спасибо!
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.