Роутинг плагина если у приложения нет фронтенда ?

Есть приложение которое не имеет фронтенда и только бекенд. Как должна выглядеть конфигурация плагина для приложения чтобы выставить урл для фронтенда из плагина ?

Пробывал просто добавить в плагин  routing.php c структурой  

return array(
    "testApp" => array(
       "url"    => "testPluginName/callback",
        "plugin" => "testPluginName",
        "app"    => "testApp",
        "module" => "frontend",
        "action" => "callback"
        )
);

в настройках плагина указал plugin.php

"frontend" => true,

из документации совсем не ясно как работает роутинг в плагинах приложений https://developers.webasyst.ru...

13 ответов

  • 1
    Михаил Ушенин Webasyst 28 декабря 2021 12:24 #

    Даже если вы найдёте какой-то хитрый способ зарезервировать некоторую маску URL для своего плагина в описанных условиях в масштабах сайта, желательно, чтобы эта зарезервированная маска была хотя бы видна пользователю в настройках структуры сайта. А в настройках структуры не может быть записи о правиле для плагина, потому для в настройках правил можно выбирать только приложения. Как минимум, по этой причине не получится полноценно реализовать то, что вы описали.

    Наверное, вам придётся либо выбрать другое приложение, для которого вы пишете плагин, либо оформить свой плагин в виде приложения с поддержкой фронтенда. Посмотрите, что вам сподручнее.

    • +1
      Anton F Anton F 28 декабря 2021 13:38 #

      он может переопределить конфигурацию приложения '/wa-config/apps/$appId/config.php' добавив  в нее 'frontend' => true

    • +1
      Fame Fame 28 декабря 2021 23:43 #

      Спасибо за разъяснения. Само приложение тоже мое но даже если я добавляю в приложение 

      "frontend" => true,

      и у приложения оставляю пустой routing.php

      <?php return array();

      то как заставить плагин для данного приложения отвечал по заданному урлу в плагине совсем не понятно.

  • 1
    Eugen Nichikov 28 декабря 2021 16:33 #

    Можно подписаться на хук routing приложения shop или site.

    • +1
      Anton F Anton F 28 декабря 2021 21:06 #

      подписаться можно, без допиливания работать не будет - там же в app подставляется текущее приложение, следовательно роутер будет искать плагин в нем

      • +1
        Eugen Nichikov Eugen Nichikov 29 декабря 2021 11:56 #

        пфф... будет.

        • +1
          Anton F Anton F 29 декабря 2021 18:11 #

          у меня нет пока возможности затестить плагин, но судя по коду не должен https://github.com/webasyst/we...

          • +1
            Eugen Nichikov Eugen Nichikov 29 декабря 2021 21:40 #

            плагин не запускал, но осуждаю.

            • +1
              Anton F Anton F 29 декабря 2021 23:28 #

              ой ну все..

            • +1
              Anton F Anton F 29 декабря 2021 23:41 #

              ну как я и говорил - не работает

              • 0
                Eugen Nichikov Eugen Nichikov 30 декабря 2021 10:20 #

                Странно, у меня такая же нога и не болит.

                Интересно было бы разобраться почему не работает, если это действительно так. У меня на двух установках (более старый фрейм и ШС и почти актуальный) всё ок. Иначе бы не выкладывал.

                Поэтому:

                1) Плагин siterouting для ШС(!)

                2) Чистим кэш (!!)

                3) урл siterouting_url открываем в поселении сайта. Например, /site/siterouting_url

                • 0
                  Anton F Anton F 31 декабря 2021 09:19 #

                  1. твой плагин отображается в приложении site у которого есть фронт, а нужно

                  Есть приложение которое не имеет фронтенда и только бекенд.

                  т.е. что-то вроде team

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

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

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