Обращение к базе данных 2.X

 
Посетитель
small user social cms
Медаль
Сообщений: 404
Здравствуйте,

Подскажите как мне в моем виджете получить из базы данных информацию?

Как сделать это методами движка, а не самому писать подключение к базе и запросы?

Пример кода приветствуется smile
Создам сайт за минимальные деньги на Joomla, Wordpress.
Посетитель
small user social cms
МедальАвторитет форумаПочетный донор проектаКубок зрительских симпатий
Сообщений: 3090
http://docs.instantcms.ru/dev/widgets
http://docs.instantcms.ru/dev/models/get
Реклама
cms
Посетитель
small user social cms
Медаль
Сообщений: 404

Спасибо большое) Я думал нет доков для движка scratch
Буду сегодня изучать.
Создам сайт за минимальные деньги на Joomla, Wordpress.
Посетитель
small user social cms
Медаль
Сообщений: 404
Подскажите.
При попытке использовать в виджете запрос к базе выдает ошибку 500 на странице.
Не могу понять как правильно определить модель для виджета, который не относится к компоненту.

Код PHP:
  1.  
  2. class widgetVaccordion extends cmsWidget {
  3.  
  4. //отключаем кеширование
  5. public $is_cacheable = false;
  6.  
  7. public function run(){
  8.  
  9. class modelVaccordion extends cmsModel {
  10. $categoryes = $this->get('con_board_cats');
  11. }
  12.  
  13. return array(
  14. 'categoryes' => $categoryes
  15. );
  16.  
  17. }
  18.  
  19. }
  20.  
Редактировалось: 2 раз (Последний: 18 февраля 2017 в 18:33)
Создам сайт за минимальные деньги на Joomla, Wordpress.
Посетитель
small user social cms
Медаль
Сообщений: 134
Подредактировать свой класс, что бы можно было получить инстанс, закинуть в папку с классами, дальше как обычно:
Код PHP:
  1.  
  2. $model_class = cmsCore::getModel('class');
  3.  
joke
Редактировалось: 1 раз (Последний: 18 февраля 2017 в 18:44)
Посетитель
small user social cms
Медаль
Сообщений: 404
oruchimaru:

Подредактировать свой класс, что бы можно было получить инстанс, закинуть в папку с классами, дальше как обычно:
Код PHP:
  1.  
  2. $model_class = cmsCore::getModel('class');
  3.  
joke

Ой ой ничего не понял ((

1) В какую папку с классами закидывать? - создать новую для виджета? - по какому адресу ее создавать?

2) Какой файл закидывать? - создать его? - что в него писать?
Это? class modelVaccordion extends cmsModel { ... }

3) В файле виджета писать ваш код?
$model_class = cmsCore::getModel('Vaccordion');
Редактировалось: 2 раз (Последний: 18 февраля 2017 в 19:06)
Создам сайт за минимальные деньги на Joomla, Wordpress.
Посетитель
small user social cms
Медаль
Сообщений: 134
Ой, слушайте, походу я не правильно вам ответил, в папке классы хранятся системные классы, можно ли их так присоеденять таким методом, я не знаю, но советую создать контроллер в папке /system/controllers/, переименовать свой класс в model.php и попробовать так же включить его $model_class = cmsCore::getModel('class');
Посетитель
small user social cms
МедальАвторитет форумаПочетный донор проектаКубок зрительских симпатий
Сообщений: 3090
Код PHP:
  1. $users_model = cmsCore::getModel('content');
Вот это вроде то что Вам нужно...
http://docs.instantcms.ru/dev/controllers/model
Редактировалось: 1 раз (Последний: 18 февраля 2017 в 19:17)
Посетитель
small user social cms
Медаль
Сообщений: 134
Более лучше вы поймете, если посмотрите видео в документации http://docs.instantcms.ru/dev/video
Посетитель
small user social cms
Сообщений: 59
Тема обширная, запросов есть много и разных, но вкратце все выглядит так:
Код PHP:
  1. # Подключаем модель компонента. Для запросов в БД неважно какого поэтому берем модель компонента content
  2. $model = cmsCore::getModel('content');
  3. #Составляем запрос в БД
  4. $model->filterEqual('название поля таблицы', 'искомое значение')->filterEqual('название поля таблицы 2', 'искомое значение 2');
  5. # делаем запрос в БД и записываем результат в переменную $result, варианты на выбор:
  6. $result = $model->get('имя таблицы');// получить все записи с этими параметрами
  7. $result = $model->getItem('имя таблицы');// получить 1 запись с этими параметрами
  8. $result = $model->getFieldFiltered('имя таблицы', 'имя нужного поля');// получить значение конкретного поля
Лучшие VDS для ваших сайтов | Дополнения для InstantCMS 2
Посетитель
small user social cms
Медаль
Сообщений: 404
dwd:

Тема обширная, запросов есть много и разных, но вкратце все выглядит так:
Код PHP:
  1. # Подключаем модель компонента. Для запросов в БД неважно какого поэтому берем модель компонента content
  2. $model = cmsCore::getModel('content');
  3. #Составляем запрос в БД
  4. $model->filterEqual('название поля таблицы', 'искомое значение')->filterEqual('название поля таблицы 2', 'искомое значение 2');
  5. # делаем запрос в БД и записываем результат в переменную $result, варианты на выбор:
  6. $result = $model->get('имя таблицы');// получить все записи с этими параметрами
  7. $result = $model->getItem('имя таблицы');// получить 1 запись с этими параметрами
  8. $result = $model->getFieldFiltered('имя таблицы', 'имя нужного поля');// получить значение конкретного поля

Спасибо получилось. А то я делал немного не правильно. Писал запрос в модели подключенного компонента.
Не понятно только почему для самостоятельного виджета нужно подключать модель какого-то компонента.
Создам сайт за минимальные деньги на Joomla, Wordpress.
Посетитель
small user social cms
МедальАвторитет форумаПочетный донор проектаКубок зрительских симпатий
Сообщений: 3090
somik, наверно потому что у виджетов нету модели, а компонент же Вам не нужен
Посетитель
small user social cms
Сообщений: 59
somik:
Не понятно только почему для самостоятельного виджета нужно подключать модель какого-то компонента.
Потому, что данная CMS так устроена, что работать с БД может только модель. Методы filterEqual, getItem и т.д. это методы самой модели. Использовать их можно только создав экземпляр класса модели
Код PHP:
  1. $model = cmsCore::getModel('content');
и обращаясь к нему
Код PHP:
  1. $model->нужный метод
Это касается не только работы с БД, но и вызовов других методов, доступных в модели того или иного компонента.
Лучшие VDS для ваших сайтов | Дополнения для InstantCMS 2
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.