Создание и доступ к маршрутам REST пользовательского модуля в Prestashop 1.7.5 - PullRequest
0 голосов
/ 21 января 2020

Я пытаюсь создать собственный контроллер в моем модуле Prestashop 1.7.5.

Я создал собственный контроллер:

# /var/www/html/modules/Profit/src/controller/ProductProfitController.php

namespace Profit\Controller;

use PrestaShopBundle\Controller\Admin\FrameworkBundleAdminController;
use Symfony\Component\HttpFoundation\JsonResponse;

class ProductProfitController extends FrameworkBundleAdminController {

    public function test() {
        return JsonResponse();
    }
}

I загрузил класс с моим composer.json файлом:

# /var/www/html/modules/Profit/composer.json

{
    "name": "company/profit",
    "description": "Moduł opłacalności",
    "authors": [
        {
            "name": "Name",
            "email": "Email"
        }
    ],
    "require": {
        "php": ">=5.6.0"
    },
    "autoload": {
        "psr-4": {            
            "Profit\\Controller\\": "src/controller/"
        },
        "classmap": [
            "Profit.php",
            "src/"
        ],
        "exclude-from-classmap": []
    },
    "config": {
        "preferred-install": "dist",
        "prepend-autoloader": false
    },
    "type": "prestashop-module",
    "author": "Name",
    "license": ""
}

Я добавил маршрут в папку routes моего модуля

# /var/www/html/modules/Profit/config/routes.yml

update_price_cut:
    path: Profit/price-cut
    methods: [GET]
    defaults:
      _controller: 'Profit\Controller\ProductProfitController::test'

Пока я не знаю, как получить доступ к этому маршруту. Я пытался:

localhost:8001/admin-dev/Profit/price-cut
localhost:8001/modules/Profit/price-cut
localhost:8001/modules/Profit/Profit/price-cut
localhost:8001/Profit/price-cut

Ничего из этого не работает. Каждый из них приводит к ошибке 404.

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

ПРИМЕЧАНИЕ: Этот контроллер должен быть контроллером BackOffice. Я хочу использовать его для обновления сведений о продуктах из списка продуктов PrestaShop по умолчанию.

1 Ответ

1 голос
/ 22 января 2020

Попробуйте $ this-> generateUrl ('update_price_cut') в контроллерах администратора. Это сгенерирует правильный маршрут к вашему контроллеру. Или, если вам это нужно в другом месте, вы можете создать собственный сервис и использовать его. Более подробную информацию вы можете найти здесь

...