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

  • 13 Ответов
  • 338 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

platonische

  • ****
  • 320
  • 0
  • Парусные экспедиции vk.com/tc670
Собственно вопрос в том как в плагине plg_paymentA вызванном компонентом com_turism получить доступ к модели order где есть функции getItem($id) и save($data) для того чтобы провести некие операции с объектом?
Парусные экспедиции http://vk.com/tc670, сплавы на байдарках http://vk.com/magnittv_turism

*

Arkadiy

  • *****
  • 5342
  • 440
  • Крепитесь, други.
Re: Обращение к модели из плагина
« Ответ #1 : 28.09.2016, 14:47:00 »
Код
JModelLegacy::addIncludePath(JPATH_ROOT.'/путь_до_папки_модели');
$model = JModelLegacy::getInstance('название модели', 'префикс');

*

platonische

  • ****
  • 320
  • 0
  • Парусные экспедиции vk.com/tc670
Re: Обращение к модели из плагина
« Ответ #2 : 28.09.2016, 15:16:13 »
Подскажите что не так?
Код: php-brief
JModelLegacy::addIncludePath(JPATH_ROOT.'/administrator/components/com_turism/models');
$model = JModelLegacy::getInstance('order', 'TurismModel');
$item = $model->getItem($id);
$html .= var_dump($item, true);
Структура объекта выводится а данных нет, $id - корректен
Парусные экспедиции http://vk.com/tc670, сплавы на байдарках http://vk.com/magnittv_turism

*

platonische

  • ****
  • 320
  • 0
  • Парусные экспедиции vk.com/tc670
Re: Обращение к модели из плагина
« Ответ #3 : 28.09.2016, 15:40:44 »
и да... структура выводится не того объекта... что-то не понимаю вообще... откуда берется JModelLegacy::getInstance('order', 'TurismModel');? из админ или сайт части? Плагин работает во view=order в сайт части а подключить надо модель order что в админ части
Парусные экспедиции http://vk.com/tc670, сплавы на байдарках http://vk.com/magnittv_turism

*

b2z

  • *****
  • 7449
  • 741
  • Разраблю понемногу
Re: Обращение к модели из плагина
« Ответ #4 : 28.09.2016, 16:28:34 »
Должна с админки, потому что JModelLegacy::addIncludePath(JPATH_ROOT.'/administrator/components/com_turism/models');
Странно, что вызывается с фронта.

*

platonische

  • ****
  • 320
  • 0
  • Парусные экспедиции vk.com/tc670
Re: Обращение к модели из плагина
« Ответ #5 : 28.09.2016, 17:01:10 »
Может что-то подключить забыл? как проверить?
Парусные экспедиции http://vk.com/tc670, сплавы на байдарках http://vk.com/magnittv_turism

*

platonische

  • ****
  • 320
  • 0
  • Парусные экспедиции vk.com/tc670
Re: Обращение к модели из плагина
« Ответ #6 : 28.09.2016, 17:07:35 »
А имеет ли право пользователь страницы через плагин получить подобный доступ?
Парусные экспедиции http://vk.com/tc670, сплавы на байдарках http://vk.com/magnittv_turism

*

robert

  • ********
  • 4002
  • 371
Re: Обращение к модели из плагина
« Ответ #7 : 28.09.2016, 17:30:54 »
Должна с админки, потому что JModelLegacy::addIncludePath(JPATH_ROOT.'/administrator/components/com_turism/models');
Странно, что вызывается с фронта.
Подозреваю, что у ТС во фронте тоже есть модель TurismModelOrder и она уже подключена. В таком случае модель из админки подключаться не будет.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

AlekVolsk

  • ********
  • 6301
  • 336
Re: Обращение к модели из плагина
« Ответ #8 : 28.09.2016, 17:38:50 »
Подозреваю, что у ТС во фронте тоже есть модель TurismModelOrder и она уже подключена. В таком случае модель из админки подключаться не будет.
+1, сам недавно на эти же грабли наступил, теперь зарекся называть классы в админке и на фронте одинаково ))

*

platonische

  • ****
  • 320
  • 0
  • Парусные экспедиции vk.com/tc670
Re: Обращение к модели из плагина
« Ответ #9 : 28.09.2016, 17:50:42 »
Слава богу оказывается view=order в клиентской части остаточное явление и все работает через myorder удалил order из пользовательской части - заработало
Парусные экспедиции http://vk.com/tc670, сплавы на байдарках http://vk.com/magnittv_turism

*

platonische

  • ****
  • 320
  • 0
  • Парусные экспедиции vk.com/tc670
Re: Обращение к модели из плагина
« Ответ #10 : 28.09.2016, 19:54:20 »
Подскажите почему я получаю fasle при выполнении
Код: php-brief
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);
Код: php-brief
public function paymentSave($data){
if (!parent::save($data)) { return false;}
return true;
}
Парусные экспедиции http://vk.com/tc670, сплавы на байдарках http://vk.com/magnittv_turism

*

robert

  • ********
  • 4002
  • 371
Re: Обращение к модели из плагина
« Ответ #11 : 28.09.2016, 20:12:42 »
Потому что
Код: php-brief
!parent::save($data)
, а кто такой parent - вами заданная нам загадка.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

platonische

  • ****
  • 320
  • 0
  • Парусные экспедиции vk.com/tc670
Re: Обращение к модели из плагина
« Ответ #12 : 28.09.2016, 22:02:28 »
Потому что
Код: php-brief
!parent::save($data)
, а кто такой parent - вами заданная нам загадка.

Хорошо. А можно сделать чтоб именно parent работал как бы он работал вызванный view=order из админки?
Или только свои операции в DB проводить?
Парусные экспедиции http://vk.com/tc670, сплавы на байдарках http://vk.com/magnittv_turism

*

robert

  • ********
  • 4002
  • 371
Re: Обращение к модели из плагина
« Ответ #13 : 28.09.2016, 22:32:40 »
Вы так и не рассказали, какой родительский класс (parent) у вашего класса Order. Подозреваю, что это JModelAdmin. Если так, то скажу вам 02 вещи:
- Зачем вы преобразовываете $data в JSON? JModelAdmin::save() не работает с JSON-аргументом. И с объектом - тоже, а $item - это объект.
- Ваша функция paymentSave() - пустая, и потому лишняя функция: parent::save($data) и так возвращает boolean.

P.S. Вы довольно давно уже в песочнице, пора научиться делать отладку самостоятельно.
« Последнее редактирование: 28.09.2016, 22:46:24 от robert »
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.