Глюк Webasyst? Проблема с роутером плагина

Подскажите, есть проблема с роутером. Пытаюсь сделать роутинг во фронтенде для api-плагина приложения shop, но постоянная 404 ошибка. При этом есть точно такой же плагин, поставленный через installer, где 100% совпадает содержимое, кроме названия плагина (удалил там все лишнее для чистоты эксперимента) и он работает. А если инсталлируешь не через installer, то создается впечатление, что webasyst попросту не видит роутер плагина. Кэш обнулял, режим разработчика включен, плагин подключен. Причем, если я беру и эту работающую на моем localhost версию, и заливаю ее на работающий проект без инсталлера, то она тоже не работает... Может быть, я где-то делаю ошибку? Или webasyst просто глючит?

В роутере: 

return array(      myplagin/api/<format:[^/]+>/<obj:[^/]+>/ => frontend/api, );

Контроллер: 

shopMyplaginPluginFrontendApi.controller.php

Содержимое:

class shopMyplaginPluginFrontendApiController extends waViewController
{
    public function execute()
    {
        echo "MyPlagin: ";

    }

}

2 ответа

  • 1
    Игорь Гапонов 16 октября 2019 14:02 #

    В plugin.php не нужно указать?

    'frontend' => true,
    • +1
      Андрей Фамилов Андрей Фамилов 16 октября 2019 14:22 #

      в plugin.php выставлено:

      'frontend' => true,

      а в wa-config/apps/shop/plugins.php

      'myplagin' => true,

      • +1
        Андрей Фамилов Андрей Фамилов 16 октября 2019 14:24 #

        plugin.php

        return array(    'frontend' => true,    'backend' => true,    'handlers' => array(    ), ); 

        • +1
          info info 16 октября 2019 15:41 #

          В роутере:

          оформление роута слетело? если нет, то роут неверный.

          Роутинг в wa плохо реализован и очень зависим от имени экшена(он же у wa и контроллер) т.е. можно конечно сделать два роута для shopMyfirstPluginFrontendApiAction.php и shopMysecondPluginFrontendApiAction.php, но это сложнее.

          • +1
            Андрей Фамилов Андрей Фамилов 16 октября 2019 17:35 #

            Имя плагина в данном случае я сделал в качестве примера, до этого у меня было несколько вариантов разных. Ради эксперимента проработал пример в мануале - тоже не вышло. После чего взял работающий плагин из webasyst-магазина Api оптовика - https://www.webasyst.ru/store/plugin/shop/apiopt/, в котором есть реализованный роутер, инсталлировал его через installer вырезал оттуда вообще все, оставив только routing.php + 

            shopApioptPluginFrontendApi.controller.php
            

            c содержимым:

            class shopApioptPluginFrontendApiController extends waViewController {    public function execute()    {        echo "Check: ";     }  }

            И прикол в том, что эта конструкция работает, но только (!) на том сервере, где она изначально инсталлирована через installer. Установка на другой сервер через копирование РАБОТАЮЩЕГО кода плагина (уже урезанная версия до роутера и контроллера по сути) так же дает ошибку 404, хотя копирую как плагин + подключаю в  wa-config/apps/shop/plugins.php

            Ну и если пойти от обратного и там, где этот код работает рядом поставить собственный плагин и, по сути, повторить схему кода (изменив имя плагина + контроллера + класса + немного перенастроить роутинг, то собственный плагин (не через инсталлер установлен) так же дает ошибку 404.

            То есть я прихожу к мысли, что если плагин со своим роутингом ставится через инсталлер, то все работает. А вот если делаешь без инсталлера, то собственный роутер не срабатывает. Или я где-то что-то упускаю из вида.

            • +1
              info info 17 октября 2019 19:58 #
              shopApioptPluginFrontendApiController

              shop - app, apiopt -plugin, frontend - module, api - action

              и поэтому если оба плагина frontend api, то они будут перекрывать друг друга и отрабатывать будет тот что идет первым в списке

              • +1
                Андрей Фамилов Андрей Фамилов 18 октября 2019 22:19 #

                Попробовал по Вашему совету, убрал все плагины, которые frontend api, но проблема осталась. Еще раз сделал чистый эксперимент: у меня есть установленный через инсталлер плагин с работающим api. Я там вырезал вообще все, оставив только:

                shopApioptPluginFrontendApi.controller.php

                с содержимым:

                class shopApioptPluginFrontendApiController extends waViewController {    public function execute()    {        echo "Check: ";     }  }

                роутер: 

                'apiopt/api/<format:[^/]+>/<obj:[^/]+>/' => 'frontend/api',

                подключен:

                'frontend' => true,

                в plugin.php

                и

                'apiopt' => true,

                в wa-config/apps/shop/plugins.php


                Эта конструкция работает, ВНИМАНИЕ(!) до момента, пока мы не переносим её на ЛЮБОЙ ДРУГОЙ сервер! Как только я копирую все это и устанавливаю без инсталлера, роутер перестает работать. 404 ошибка и все! Кэш сбрасываю. 

                Скажите, может быть есть какие-либо скрытые настройки при переносе плагина, может я что-то упускаю из вида? Если нет, то - это 100% глюк webasyst.

                И что с этим делать?

                • +1
                  info info 19 октября 2019 10:19 #

                  кеширование точно выключено? в логах ошибок что-нибудь есть?

                • +1
                  Павел Трофимов Павел Трофимов 19 октября 2019 13:28 #

                  Эта конструкция работает, ВНИМАНИЕ(!) до момента, пока мы не переносим её на ЛЮБОЙ ДРУГОЙ сервер!

                  Ну значит на другом сервере чего-то не хватает (классов и т.п.). Включите логгирование, посмотрите логи.  Под отладчиком в конце концов гляньте что там происходит.

  • 1
    Syrnik.com 16 октября 2019 15:59 #

    Кэш сбрасывали?

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите