Новости Joomla

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

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Добрый день!

Подскажите такую штуку. Хочу запускать CURL и проверять некоторые значения. Вот такую статью прочитал давно http://ссылка вырезана, так как домен распространяет вирусы/blog/sobytiya/podklyuchenie-joomla-framework-v-otdelnom-fajle.html и у меня работало например взаимодействие с базой посредствам
Спойлер
[свернуть]

Но захотелось работы через модели
Есть у меня методы которые получают данные - они работают, а вот метод save() никак не хочет.

Подключаю вот так

Спойлер
[свернуть]
« Последнее редактирование: 30.05.2019, 16:06:18 от platonische »
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: curl-файл с Joomla $model->save($data)
« Ответ #1 : 24.04.2019, 17:01:33 »
Дополню - выводит 404 страницу, может в чем в другом проблема?
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: curl-файл с Joomla $model->save($data)
« Ответ #2 : 24.04.2019, 17:08:22 »
А для чего у нас вообще отладка кода придумана? Что значит - не работает?
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: curl-файл с Joomla $model->save($data)
« Ответ #3 : 24.04.2019, 17:43:29 »
А для чего у нас вообще отладка кода придумана? Что значит - не работает?
Если честно то вся моя отладка сводится к var_dump и проверке данных.
понял только то что в методе не выполняется parent:save($data);
если скажите как дебажить - буду рад и признателен.
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Re: curl-файл с Joomla $model->save($data)
« Ответ #4 : 24.04.2019, 19:36:59 »
В методе save оборви выполнение скрипта die() и будет видно выполняется метод или нет.
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: curl-файл с Joomla $model->save($data)
« Ответ #5 : 24.04.2019, 22:02:17 »
В методе save оборви выполнение скрипта die() и будет видно выполняется метод или нет.
Я примерно тоже самое делал но var_dump прерывается выполнение внутри метода save в месте где вызывается parent::save.
Вывод значит что-то не так с данными, со структурой например, может не быть поля в бд... или ещё чего... Или die что-то другое может сказать? Проверить смогу только завтра.
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: curl-файл с Joomla $model->save($data)
« Ответ #6 : 25.04.2019, 08:56:14 »
Цитировать
понял только то что в методе не выполняется parent:save($data);
Опять же, что значит не выполняется? Возвращает false? Или что?
*

tm2010

  • Захожу иногда
  • 76
  • 0 / 0
Re: curl-файл с Joomla $model->save($data)
« Ответ #7 : 25.04.2019, 13:29:26 »
честно говоря не очень ясно зачем вам эта чепуха:

$jinput = $app->input;
$phone = $jinput->getString('phone');
$channel = $jinput->getString('channel', '');
$record_file = $jinput->getString('record', '');
вы выполняете программу в CLI ( в командном файле), в стороне от веб-сервера и там этих переменных просто нет
их можно прочитать в базе данных, передать с параметрами через командник, но тут и точно нет
Или я чего-то не понимаю ?
 
если вам нужны
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: curl-файл с Joomla $model->save($data)
« Ответ #8 : 29.05.2019, 15:01:07 »
честно говоря не очень ясно зачем вам эта чепуха:

$jinput = $app->input;
$phone = $jinput->getString('phone');
$channel = $jinput->getString('channel', '');
$record_file = $jinput->getString('record', '');
вы выполняете программу в CLI ( в командном файле), в стороне от веб-сервера и там этих переменных просто нет
их можно прочитать в базе данных, передать с параметрами через командник, но тут и точно нет
Или я чего-то не понимаю ?
 
если вам нужны
Телефонный сервер в строку запихивает некие переменные - приложение их принимает и использует. Эта часть работает.

Опять же, что значит не выполняется? Возвращает false? Или что?
Я не понимаю как провести отладку правильно. Я сделал следующее, но решения не нашел:

1. сократил скрипт до минимума
Спойлер
[свернуть]

Получаю ошибку 500. Все функции перестают работать на строках parent::function будто нет чего-то (классов ...? getTable??) Все функции в которых нет parent::function - все работают
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
Re: curl-файл с Joomla $model->save($data)
« Ответ #9 : 29.05.2019, 15:19:45 »
Попробуйте получать модель через контроллер. Вот пример для умного поиска, но там поймете как переделать под свой:
Код
$cpath = JPATH_SITE.'/components/com_finder';
if(!class_exists('FinderController')) require($cpath.'/controller.php');
if(!class_exists('JHtmlQuery')) require($cpath.'/helpers/html/query.php');
if(!class_exists('JHtmlFilter')) require($cpath.'/helpers/html/filter.php');
$config = array('base_path' => $cpath);
$ctrl = new FinderController($config);
$model = $ctrl->getModel('Search', 'FinderModel');
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: curl-файл с Joomla $model->save($data)
« Ответ #10 : 29.05.2019, 15:46:13 »
Попробуйте получать модель через контроллер. Вот пример для умного поиска, но там поймете как переделать под свой:
Код
$cpath = JPATH_SITE.'/components/com_finder';
if(!class_exists('FinderController')) require($cpath.'/controller.php');
if(!class_exists('JHtmlQuery')) require($cpath.'/helpers/html/query.php');
if(!class_exists('JHtmlFilter')) require($cpath.'/helpers/html/filter.php');
$config = array('base_path' => $cpath);
$ctrl = new FinderController($config);
$model = $ctrl->getModel('Search', 'FinderModel');
Все свелось к тому же. Стоп на parent::

Вот так я поправил файл
Спойлер
[свернуть]

в файле модели /administrator/componets/com_turism/models/finance.php добавил

Спойлер
[свернуть]

получаю вывод первого echo.
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
Re: curl-файл с Joomla $model->save($data)
« Ответ #11 : 29.05.2019, 16:08:24 »
получаю вывод первого echo.
Попробуйте там:
Код
var_dump(get_class_methods(parent));
перед или сразу после первого echo
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: curl-файл с Joomla $model->save($data)
« Ответ #12 : 29.05.2019, 16:09:45 »
var_dump(get_class_methods(parent));
NULL
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
Re: curl-файл с Joomla $model->save($data)
« Ответ #13 : 29.05.2019, 16:14:28 »
в файле модели /administrator/componets/com_turism/models/finance.php добавил
Вероятно потому, что вы подключаете контроллер и модель фронта, а правки делаете в админке
NULL
Странно. Тогда впишите вместо parent имя родительского класса модели в кавычках (т.е. строкой).
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: curl-файл с Joomla $model->save($data)
« Ответ #14 : 29.05.2019, 16:49:36 »
Вероятно потому, что вы подключаете контроллер и модель фронта, а правки делаете в админке
Указал именно пути к админке. Класс проверю завтра.
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
Re: curl-файл с Joomla $model->save($data)
« Ответ #15 : 29.05.2019, 16:54:07 »
Указал именно пути к админке.
Да, это я неправильно посмотрел. Вобщем, удостоверьтесь, что у родительского класса есть метод getItem. Если его нет, то и вызывать его не надо - читайте объект из базы и отдавайте. Либо другую модель подключать, если их там несколько.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

anatol81n

  • Захожу иногда
  • 82
  • 2 / 0
Re: curl-файл с Joomla $model->save($data)
« Ответ #16 : 29.05.2019, 20:45:59 »
так зареквайрите файл с моделью, зачем вам контроллер?
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: curl-файл с Joomla $model->save($data)
« Ответ #17 : 30.05.2019, 10:59:53 »
так зареквайрите файл с моделью, зачем вам контроллер?
Что именно вы имеете ввиду? вот это:
Код
//JModelLegacy::addIncludePath(JPATH_BASE.DS.'administrator'.DS.'components'.DS.'com_turism'.DS.'models', 'TurismModel');
//$model_finance  = JModelLegacy::getInstance( 'finance' , 'TurismModel'); //Обращаемся к модели

Результат аналогичен
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: curl-файл с Joomla $model->save($data)
« Ответ #18 : 30.05.2019, 11:06:42 »
Да, это я неправильно посмотрел. Вобщем, удостоверьтесь, что у родительского класса есть метод getItem. Если его нет, то и вызывать его не надо - читайте объект из базы и отдавайте. Либо другую модель подключать, если их там несколько.
Проверил и TurismModelFinance и JModelAdmin в обеих случаях методы и getItem и save присутствуют.
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: curl-файл с Joomla $model->save($data)
« Ответ #19 : 30.05.2019, 11:15:01 »
Может что-то изначально нельзя делать так. Еще раз опишу что я делаю.
Некое событие в системе запускает скрипт с cUrl-запросом (есть у меня варианты с передачей переменных и без передачи - это все работает).
Далее выполняется php-скрипт - собственно его и разбираем. Скрипт проводит анализ и делает изменение или создание записи.
Так вот, напрямую с базой все работает, но есть необходимость делать изменения именно при помощи модели, т.к. там включены некие дополнительные нужные процедуры.

Вот в этой то части и нет понимания почему не работает. Единственное что удалось заметить. все методы из модели, которые не наследуются, выполняются, а вот те которые наследуются молчат (что там и как отладить не знаю).

По советам выше, проверено что parent - возвращает NULL. Методы в модели присутствуют.

Кто какие идеи еще предложит? или все-таки Joomla не допускает подобного?
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
Если у вас getItem наследуется, то зачем вы его еще и дописываете в модуле дополнительно? Просто вызывайте - будет вызван именно родительский. И уточните все-таки имя родительского класса - какое оно?
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Если у вас getItem наследуется, то зачем вы его еще и дописываете в модуле дополнительно? Просто вызывайте - будет вызван именно родительский. И уточните все-таки имя родительского класса - какое оно?
Все описал выше. getItem описан в модели в данном случае просто так, чтобы туда вставить отладку. Родительский класс JModelAdmin
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
Родительский класс JModelAdmin
Да, в нем есть getItem. Должно работать. Хз почему не хочет - смотреть надо.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Да, в нем есть getItem. Должно работать. Хз почему не хочет - смотреть надо.

В том-то и вопрос как посмотреть? Я вариантов не знаю.
И опять же почему parent -NULL, может здесь ответ есть?
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
И опять же почему parent -NULL
не parent NULL, а get_class_methods(parent) NULL. Видимо эта функция аргументом принимает только строку или объект, но не ссылку на класс.
Попробуйте что-нибудь вроде:
Код
try {
    echo parent::getItem($id);
} catch (Exception $e) {
    echo 'Выброшено исключение: ',  $e->getMessage(), "\n";
}

Может получиться узнать на что ругается.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
try {
    echo parent::getItem($id);
} catch (Exception $e) {
    echo 'Выброшено исключение: ',  $e->getMessage(), "\n";
}
Ничего не вывела. Именно ничего.
при любом вызове parent выводится НИЧЕГО и если перед ним не поставить что-то по выводится 500 ошибка, иначе выводится все что до parent и все.

Код выше не показал catch, он прошел по try но ничего не вывел.
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Пошел в логи вот что там
Код
 PHP Fatal error:  Call to a member function load() on a non-object in /srv/www/internetservers/turism/www/libraries/src/MVC/Model/AdminModel.php on line 944
Там вот это
Код
$return = $table->load($pk);
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
Там вот это
Значит там $table не инициализирован.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Значит там $table не инициализирован.

Тут мои знания не дают ответа. Что надо делать и в какую сторону смотреть?
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Вот с этим продвинулся дальше

Код
JTable::addIncludePath(JPATH_BASE.'/administrator/components/com_turism/tables');
Позже отпишу все ли решил
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Отправка файлов через ajax в модуль Joomla

Автор hemicide

Ответов: 19
Просмотров: 1090
Последний ответ 11.04.2022, 08:44:33
от sivers
[РЕШЕНО] Дублирование при создании

Автор platonische

Ответов: 7
Просмотров: 924
Последний ответ 12.02.2021, 11:24:26
от platonische
[РЕШЕНО] onChange в админке на field modal

Автор platonische

Ответов: 1
Просмотров: 382
Последний ответ 30.01.2021, 16:40:45
от platonische
Документация по разработки компонента для Joomla 3.x

Автор Aspik

Ответов: 9
Просмотров: 2900
Последний ответ 23.01.2021, 07:55:56
от hmr
Применение ajax (Аякс) в модуле Joomla

Автор tm2010

Ответов: 34
Просмотров: 3969
Последний ответ 26.09.2020, 09:38:35
от b2z