Контроллеры {файлы}

Контроллер - класс с методами (или обычный скрипт), который будет отработан при входящем запросе.

Контроллеры указываются в карте роутов при описании роута. По умолчанию, контроллеры располагаются в папке модуля /bitrix/modules/artamonov.rest/lib/controllers/. Но, также, контроллер может располагаться за пределами модуля, главное чтобы он был доступен через пространство имён.

Начиная с версии 2.3.0 можно указать путь к PHP-скрипту, вместо указания неймспейса контроллера.

Для использования контроллеров из файлов, необходимо:

  1. Создать директорию, например, /local/api/controllers/;

  2. Создать файл с необходимым кодом, например, /local/api/controllers/product.php;

<?php
/**
 * Copyright (c) 2019 Denis Artamonov
 * Created: 3/18/19 12:37 PM
 * Author: Denis Artamonov
 */

// Массив в который формируем ответ
$response = [];

// code ...

// Возвращаем ответ клиенту
response->json($response);
  1. Указать в карте роутов, в качестве контроллера, путь к PHP-скрипту.

<?php
/**
 * Copyright (c) 2019 Denis Artamonov
 * Created: 3/18/19 12:43 PM
 * Author: Denis Artamonov
 */

return [
    'GET' => [
        'product/get' => [
            'controller' => $_SERVER['DOCUMENT_ROOT'] . '/local/api/controllers/product.php'
        ]
    ],
    'POST' => [
        'product/post' => [
            'controller' => $_SERVER['DOCUMENT_ROOT'] . '/local/api/controllers/product.php'
        ]
    ],
    'PUT' => [
        'product/put' => [
            'controller' => $_SERVER['DOCUMENT_ROOT'] . '/local/api/controllers/product.php'
        ]
    ],
    'PATCH' => [
        'product/patch' => [
            'controller' => $_SERVER['DOCUMENT_ROOT'] . '/local/api/controllers/product.php'
        ]
    ],
    'DELETE' => [
        'product/delete' => [
            'controller' => $_SERVER['DOCUMENT_ROOT'] . '/local/api/controllers/product.php'
        ]
    ],
    'HEAD' => [
        'product/head' => [
            'controller' => $_SERVER['DOCUMENT_ROOT'] . '/local/api/controllers/product.php'
        ]
    ]
];

Last updated