Форум русской поддержки Joomla!® CMS
10.12.2016, 03:14:00 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Обращение к модели из плагина

 (Прочитано 165 раз)
0 Пользователей и 1 Гость смотрят эту тему.
platonische
Давно я тут
****

Репутация: +0/-0
Offline Offline

Сообщений: 297


Парусные экспедиции vk.com/tc670


« : 28.09.2016, 13:37:33 »

Собственно вопрос в том как в плагине plg_paymentA вызванном компонентом com_turism получить доступ к модели order где есть функции getItem($id) и save($data) для того чтобы провести некие операции с объектом?
Записан
Arkadiy
Группа развития
*****

Репутация: +432/-0
Offline Offline

Пол: Мужской
Сообщений: 5317


Крепитесь, други.


« Ответ #1 : 28.09.2016, 13:47:00 »

Код:
JModelLegacy::addIncludePath(JPATH_ROOT.'/путь_до_папки_модели');
$model = JModelLegacy::getInstance('название модели', 'префикс');
Записан
platonische
Давно я тут
****

Репутация: +0/-0
Offline Offline

Сообщений: 297


Парусные экспедиции vk.com/tc670


« Ответ #2 : 28.09.2016, 14:16:13 »

Подскажите что не так?
Код
JModelLegacy::addIncludePath(JPATH_ROOT.'/administrator/components/com_turism/models');
$model = JModelLegacy::getInstance('order', 'TurismModel');
$item = $model->getItem($id);
$html .= var_dump($item, true);
 
Структура объекта выводится а данных нет, $id - корректен
Записан
platonische
Давно я тут
****

Репутация: +0/-0
Offline Offline

Сообщений: 297


Парусные экспедиции vk.com/tc670


« Ответ #3 : 28.09.2016, 14:40:44 »

и да... структура выводится не того объекта... что-то не понимаю вообще... откуда берется JModelLegacy::getInstance('order', 'TurismModel');? из админ или сайт части? Плагин работает во view=order в сайт части а подключить надо модель order что в админ части
Записан
b2z
Support Team
*****

Репутация: +710/-0
Offline Offline

Пол: Мужской
Сообщений: 7538


Разраблю понемногу


« Ответ #4 : 28.09.2016, 15:28:34 »

Должна с админки, потому что JModelLegacy::addIncludePath(JPATH_ROOT.'/administrator/components/com_turism/models');
Странно, что вызывается с фронта.
Записан
platonische
Давно я тут
****

Репутация: +0/-0
Offline Offline

Сообщений: 297


Парусные экспедиции vk.com/tc670


« Ответ #5 : 28.09.2016, 16:01:10 »

Может что-то подключить забыл? как проверить?
Записан
platonische
Давно я тут
****

Репутация: +0/-0
Offline Offline

Сообщений: 297


Парусные экспедиции vk.com/tc670


« Ответ #6 : 28.09.2016, 16:07:35 »

А имеет ли право пользователь страницы через плагин получить подобный доступ?
Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3595


« Ответ #7 : 28.09.2016, 16:30:54 »

Должна с админки, потому что JModelLegacy::addIncludePath(JPATH_ROOT.'/administrator/components/com_turism/models');
Странно, что вызывается с фронта.
Подозреваю, что у ТС во фронте тоже есть модель TurismModelOrder и она уже подключена. В таком случае модель из админки подключаться не будет.
Записан
AlekVolsk
Профи
********

Репутация: +317/-3
Offline Offline

Пол: Мужской
Сообщений: 6461



« Ответ #8 : 28.09.2016, 16:38:50 »

Подозреваю, что у ТС во фронте тоже есть модель TurismModelOrder и она уже подключена. В таком случае модель из админки подключаться не будет.
+1, сам недавно на эти же грабли наступил, теперь зарекся называть классы в админке и на фронте одинаково ))
Записан
platonische
Давно я тут
****

Репутация: +0/-0
Offline Offline

Сообщений: 297


Парусные экспедиции vk.com/tc670


« Ответ #9 : 28.09.2016, 16:50:42 »

Слава богу оказывается view=order в клиентской части остаточное явление и все работает через myorder удалил order из пользовательской части - заработало
Записан
platonische
Давно я тут
****

Репутация: +0/-0
Offline Offline

Сообщений: 297


Парусные экспедиции vk.com/tc670


« Ответ #10 : 28.09.2016, 18:54:20 »

Подскажите почему я получаю fasle при выполнении
Код
JModelLegacy::addIncludePath(JPATH_ROOT.'/administrator/components/com_turism/models');
$model = JModelLegacy::getInstance('order', 'TurismModel');
$item = $model->getItem($id);
$data = json_encode($item);
$model->paymentSave($data);
 

В модели ORDER есть функция paymentSave($data);
Код
public function paymentSave($data){
if (!parent::save($data)) { return false;}
return true;
}
 
Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3595


« Ответ #11 : 28.09.2016, 19:12:42 »

Потому что
Код
!parent::save($data)
, а кто такой parent - вами заданная нам загадка.
Записан
platonische
Давно я тут
****

Репутация: +0/-0
Offline Offline

Сообщений: 297


Парусные экспедиции vk.com/tc670


« Ответ #12 : 28.09.2016, 21:02:28 »

Потому что
Код
!parent::save($data)
, а кто такой parent - вами заданная нам загадка.

Хорошо. А можно сделать чтоб именно parent работал как бы он работал вызванный view=order из админки?
Или только свои операции в DB проводить?
Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3595


« Ответ #13 : 28.09.2016, 21:32:40 »

Вы так и не рассказали, какой родительский класс (parent) у вашего класса Order. Подозреваю, что это JModelAdmin. Если так, то скажу вам 02 вещи:
- Зачем вы преобразовываете $data в JSON? JModelAdmin::save() не работает с JSON-аргументом. И с объектом - тоже, а $item - это объект.
- Ваша функция paymentSave() - пустая, и потому лишняя функция: parent::save($data) и так возвращает boolean.

P.S. Вы довольно давно уже в песочнице, пора научиться делать отладку самостоятельно.
« Последнее редактирование: 28.09.2016, 21:46:24 от robert » Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet