Webasyst ShopScript 7 ошибка Call to undefined method getLayout code 500 при разработке плагина

182
06 сентября 2021, 04:50

Занимаюсь разработкой плагина, в котором должно выполняться действие по ajax.

/webasyst/shop/?plugin=myplugin&action=generateForSelectedProducts

Действие лежит в файле /webasyst/shop/plugins/myplugin/lib/actions/backend/shopMyPluginPluginBackendGenerateForSelectedProducts.action.php. Его код следующий:

<?php
class shopMyPluginPluginBackendGenerateForSelectedProductsAction extends waJsonController
{
    public function execute()
    {
        $this->response = 'hello world';
    }
}

При вызове метода через url выходит ошибка:

Call to undefined method getLayout code 500
## wa-system/controller/waController.class.php(245)
#0 wa-system/controller/waDefaultViewController.class.php(44): waController->__call('getLayout', Array)
#1 wa-system/controller/waController.class.php(21): waDefaultViewController->execute()
#2 wa-system/controller/waViewController.class.php(46): waController->run(NULL)
#3 wa-system/controller/waFrontController.class.php(255): waViewController->run(NULL)
#4 wa-system/controller/waFrontController.class.php(190): waFrontController->runController(Object(waDefaultViewController), NULL)
#5 wa-system/controller/waFrontController.class.php(84): waFrontController->execute('myplugin', 'backend', 'generateForSele...')
#6 wa-system/waSystem.class.php(649): waFrontController->dispatch()
#7 wa-system/waSystem.class.php(568): waSystem->dispatchBackend('webasyst/shop/')
#8 index.php(95): waSystem->dispatch()
#9 {main}
GET
array(
  'plugin' => 'myplugin',
  'action' => 'generateForSelectedProducts',
)
Params
array()

Главный файл плагина, конфиги и прочие сопроводительные файлы созданы. В плагине есть не ajax-контроллеры, которые отрабатывают нормально.

Вероятно ошибка в правилах наименования. Подскажите, пожалуйста, возможную причину и решение.

Answer 1

Нашел ошибку. Шаги исправления:

  1. Файл shopMyPluginPluginBackendGenerateForSelectedProducts.action.php нужно переименовать в shopMyPluginPluginBackendGenerateForSelectedProducts.controller.php.
  2. Имя класса нужно изменить с shopMyPluginPluginBackendGenerateForSelectedProductsAction на shopMyPluginPluginBackendGenerateForSelectedProductsController
READ ALSO
Как получить пользователей для которых завершена обработка и посчитать сколько дней на это потрачено? [закрыт]

Как получить пользователей для которых завершена обработка и посчитать сколько дней на это потрачено? [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

287
Как создать INNER JOIN query в JPA Repository

Как создать INNER JOIN query в JPA Repository

Я хочу создать создать запросс для нахождения всех совпадающих записей в таблицах, но в случае с таблицами Customers и Payments при попытке создать...

162