Запуск контроллера из модуля

Всем доброго дня!
Как осуществить запуск контроллера из php кода?
Например из командной строки можно запустить командой - php /path/to/cart/admin.php --dispatch=controller.mode
А как сделать это из своего аддона. Контроллер ничего выводить не должен, просто делает определенные действия на сайте.

Curl? Правильно ли будет такое решение? Или может есть какие-то cs cart способы? )

Заранее спасибо!

Объясните поподробнее. Нужно запустить из контроллера витрины админский контроллер?

Не много не так. Мне нужно в своем модуле по крону запускать импорты. Т.е. я создал свой контроллер, внутри которого по моей логике нужно стартовать пресеты импортов.

пока сделал так:

shell_exec('/opt/php71/bin/php путь к админке -p --dispatch=advanced_import.import.import --preset_id='.$s_import_preset['preset_id']);

Это работает, но не уверен что так поступать правильно ) Есть какой-то cs cart способ для запуска контроллера из PHP?

Если вам нужно запускать по крону контроллер то просто добавьте его в схему: app/addons/my_changes/schemas/permissions/trusted_controllers.post.php

$schema['my_changes']['allow']['do_something'] = true;

return $schema;

do_something - название мода, my_changes - название контроллера

Мой контроллер то по крону запускается, все норм. Мне нужно в моем контроллере запускать код другого контроллера (импорт товаров), по условиям

Если код из контроллера повторяется в другом контроллере то лучше обернуть повторяющийся код в функцию и вызывать эту функцию где угодно и сколь угодно раз.

Думаю обращение из контроллера к другому контроллеру не очень хорошая практика.

Так вы возьмите код из файла app/addons/advanced_import/controllers/backend/advanced_import.php для mode = import и используйте его, чтобы не думалось.

shell_exec часто отключают из соображений безопасности, причем могут внезапно на хостинге выключить

Там портянка не маленькая, но раз это единственный способ, попробую. Спасибо всем за помощь!

Http::get($url, $data)

1 лайк

Http::get(fn_url(‘advanced_import.import’), array(‘preset_id’=>4));
Так не срабатывает. Импорт не запускается, или я что-то не так делаю?

Контроллер же админский, поэтому area надо указывать. Например,

`Http::get(fn_url(‘advanced_import.import’, ‘A’), array(‘preset_id’=>4));

Так тоже импорт не запускается (

попробуйте shell_exec, там же по крону его можно запускать

Вот так точно запустится :slight_smile:

Http::get(fn_url('advanced_import.import.import?preset_id=4', 'A'));

Его я как раз пока и использую, с ним все работает, но многие говорят что это не есть правильно ))

Попробую так )

Неа, ни в какую не хочет работать

Да перенесите вы код в функцию и всё решится.

Похоже что только так. Спасибо всем огромное!

А это есть сверху?

use Tygh\Http;

Да, конечно )