Мне нужно сгенерировать документацию Api через swagger php в Битриксе, а она не проходит без прямого require до файла start.php, присылает "Class Bitrix\Main\Engine\Controller not found".
Есть другой способ подключения классов Битрикса, например в композер?
<?php
namespace Http\Controllers;
//----без него ошибка
require_once("/var/www/bitrix/bitrix/modules/main/start.php");
use Bitrix\Main\Engine\Controller;
abstract class BaseController extends Controller
{
public function getDefaultPreFilters(): array
{
return [];
}
}
Версия 1с битрикс 24.0...
Сервер на докере.
Роутинг подключён.
Модуль установлен в админке yngc0der.oauth2server.
В init.php стоит require до композера. Он в local/
init.php
<?
$vendor = $_SERVER['DOCUMENT_ROOT'].'/local/vendor/autoload.php';
if(file_exists($vendor)){
require_once $vendor;
}
use Bitrix\Main;
Main\EventManager::getInstance()->addEventHandler(
'yngc0der.oauth2server',
'OnScopesLoad',
static function (Main\Event $event): Main\EventResult {
return new Main\EventResult(Main\EventResult::SUCCESS, [
'read' => 'Read site data',
'write' => 'Write site data',
]);
}
);
composer.json
{
"require": {
"league/oauth2-server": "^9.0",
"guzzlehttp/psr7": "^2.6",
"zircote/swagger-php": "^4"
},
"extra": {
"bitrix-dir": "../bitrix"
},
"autoload": {
"psr-4": {
"": "lib/",
"OpenApi\\": "vendor/autoload.php"
}
}
}
.settings.php
'yngc0der.oauth2server' => [
'value' => [
'private_key' => '/var/www/bitrix/local/private.key', // здесь абсолютный путь
'public_key' => '/var/www/bitrix/local/public.key', // здесь абсолютный путь
'private_key_passphrase' => null,
'encryption_key' => 'BUIxH//ygQrJDGupFM9zuNYHJC6zQsi20PtuO3eNLR4=', // ключ шифрования
]
],
'routing' => [
'value' => [
'config' => [
'api.php'
]
]
],