Вызов экшена бекенда из плагина
Добрый день!
Можно ли каким-то способом вызвать экшен бекенда (админки) из кода плагина? И ещё вопрос - как туда передавать параметры? Например, это действие требует выбора файла на компьютере, как его передавать из php-кода плагина?
Эта тема в архиве. Добавление комментариев к ней отключено.
10 ответов
Можно - достаточно просто обратиться к нужному методу или по URL к шаблону.
Файлы отправляются обычно через POST поэтому вам нужен JS/HTML.
Не могли бы Вы показать пример php-кода, вызывающего определённый экшен? Что-то нигде не могу найти.
Мне нужно вызвать функцию save из контроллера shopCsvProductupload (как я понял, именно она отвечает за выгрузку csv-файла перед импортом товаров), но она protected. Как правильно к ней обращаться? Или можно выполнить задачу как-то иначе?
Экшен обычно возвращает фрагмент HTML-кода в ответ на запрос пользователя. А для загрузки файлов обычно используется контроллер, не возвращающий HTML. Почему вы пытаетесь объединить обе эти задачи? Вообще что вам нужно сделать в итоге?
Мне нужно автоматизировать процесс выгрузки товаров из csv-файла в админке.
Здесь как раз та самая путаница в терминологии между экшенами и контроллерами, о которой неоднократно говорили. Одно отличается от другого только наследованием родительских классов. Возможно, при проектировании движка этому придавался какой-то смысл, но сейчас его нет. Было бы гораздо проще, если б всегда был экшен или всегда контроллер без разницы.
Экшен не всегда обязательно обрабатывает HTTP-запросы. А контроллер — всегда. Возможно, как минимум, поэтому между ними разница в терминологии.
waCliController :)
А когда экшены не обрабатывают? В случаях типа вызова из контроллера executeAction()?
Значит, с приставкой "HTTP-" я погорячился. Просто "запросы" тогда )
или в случае с
Но мне кажется, что эта дискуссия бессмысленна. Если человек не до конца понимает разницу, достаточно просто объяснить. Вряд ли Вебасист станет менять терминологию только из-за того, что кому-то она кажется нелогичной.