Как правильно добавить в роутинг новый адрес для запросов?

Добрый день! Сделал обработчик сервисных функций, разместил его в shop/lib/actions/frontend/ Добавил в /shop/lib/config/routing.php правило и все работало. Вчера обновил шопскрипт и роутинг затерся на новый(?). Как корректно добавлять новые адреса для отправки запросов, чтобы обновляться без проблем? 

1 ответ

  • 3

    Корректно - писать плагин.

    Но если очень лень, то можно скопировать файл

    wa-apps/shop/lib/config/routing.php

    в

    wa-config/apps/shop/routing.php

    и уже во второй вносить изменения.

    С обновлениями каталог wa-config не перезатирается.

    • +1
      Дмитрий Дмитрий 8 июня 2021 10:31 #

      Спасибо за ответ! Плагину все-равно нужно роутинг настраивать? Хочу обратиться на mojsite.ru/customservice и передать туда некий запрос с возвратом результата. Проблем написать плагин нет, только не совсем понятно как настроить передачу запроса плагину?

      • +3

        1) Плагин customservice

        2) в файле wa-apps/shop/plugins/customservice/lib/config/routing.php

        <?php
        
        return [    
            'customservice' => 'frontend/mycontroller',
        ];

        3) в файле wa-apps/shop/plugins/customservice/lib/actions/frontend/shopCustomservicePluginFrontendMycontroller.controller.php или wa-apps/shop/plugins/customservice/lib/actions/frontend/shopCustomservicePluginFrontendMycontroller.action.php добавляем обработку

        • +1
          Дмитрий Дмитрий 8 июня 2021 10:42 #

          Спасибо!

        • +1
          Дмитрий Дмитрий 9 июня 2021 21:54 #

          Не взлетает. Весь день бьюсь, не могу понять:

          Создал: /wa-apps/shop/plugins/shipcalc/lib/actions/frontend/shopShipcalcPluginFrontendSc.controller.php

          <?php
          
          class shopShipcalcPluginFrontendScController extends waJsonController
          {
              public function execute()
              {
                  waLog::log('calcship calculate...');
              }
          }

          Создал роутинг 

          /wa-apps/shop/plugins/shipcalc/lib/config/routing.php

          <?php
          waLog::log('calcship routing...');
          return array(
              'shipcalc/' => 'frontend/sc', 
          );

          Создал класс плагина (кстати он нужен, если обработка только контроллером?)

          /wa-apps/shop/plugins/shipcalc/lib/shopShipcalc.plugin.php

          <?php
          
          class shopShipcalcPlugin extends shopPlugin 
          {
          
                   public function cartadd($item) 
                   {
                  waLog::log('calcship working...');
                  }
          
          } 

          Описание плагина 

          /wa-apps/shop/plugins/shipcalc/lib/config/plugin.php

          <?php
          
          return array(
              // обязательные параметры
              'name' => 'Shipcalc',
              'description' => 'Расчет доставки',
              'version' => '1.0',
              'handlers' => array(
                  'cart_add' => 'cartadd',
                   //...
                 ),
              'img' => 'img/plugin.png', 
             );

          Итого события обрабатываются, но при попытке отправить POST запрос на mysite.ru/shipcalc возвращает 404. Т

          Документация говорит, что нужно размещать контроллер прямо в папке actions. 

          создаем файл lib/actions/shopBrandsPluginFrontendBrand.controller.php.

          пробовал и так и так, не работает. Так же документация упоминает GET но не упоминает POST.

          Где искать ошибки тоже не понятно. На сегодня идеи закончились, буду благодарен за направление, куда копать. Может где-то в наименованиях ошибся, перепроверял уже несколько раз.

          • +1

            если с простого начать, то кэш фрэймворка сбрасывал?
            в error.log пусто?

            • +1
              Дмитрий Дмитрий 10 июня 2021 09:10 #

              Кэш сбрасывал (после чего обработчик события cartadd заработал).

              error.log пустой

              Итого сам плагин работает, не работает роутинг и, как результат, не вызывается контроллер. 

            • +1
              Дмитрий Дмитрий 10 июня 2021 09:20 #

              access log пишет такое:

              [10/Jun/2021:09:21:42 +0300] "POST /shipcalc HTTP/1.1" 301 - "https://mysite.ru/454/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36" 0
              [10/Jun/2021:09:21:42 +0300] "GET /shipcalc/ HTTP/1.1" 404 2242 "https://mysite.ru/454/"
          • +2
            Дмитрий Дмитрий 10 июня 2021 10:02 #

            Разобрался. В параметры плагина (файл lib/config/plugin.php) нужно добавить 'frontend' => true,:

            <?php
            
            return array(
                // обязательные параметры
                'name' => 'Shipcalc',
                'description' => 'Расчет доставки',
                'version' => '1.0',
                'frontend' => true,
                'handlers' => array(
                    'cart_add' => 'cartadd',
                     //...
                   ),
                'img' => 'img/plugin.png', 
               );

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

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