sonata / docs
OpenAPI docs module for Sonata framework
Installs: 6
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/sonata/docs
Requires
- php: ^8.3
- sonata/framework: ^1.0
- zircote/swagger-php: ^6.0
This package is auto-updated.
Last update: 2026-02-07 09:23:33 UTC
README
Модуль OpenAPI для Sonata Framework. Генерирует спецификацию и отдает ее через эндпоинт.
Установка
composer require sonata/docs
Эндпоинты
Контроллер Sonata\Docs\Controllers\SwaggerController подключается автоматически:
GET /openapi.json— OpenAPI спецификация
Логика
- Генератор
OpenApiGeneratorсканирует контроллеры и DTO. - Использует атрибуты
#[Route],#[Controller],#[Tag],#[Response],#[From]. - В
prodрежиме применяетOpenApiCache.
Атрибуты для документации
Используйте атрибуты Sonata Framework и OpenAPI:
#[Tag('Название', 'Описание')]— группировка методов#[Response(Dto::class, isArray: true)]— схема ответа#[From('json'|'query')]— источник данных#[OpenApi\Attributes\Property(...)]— описание полей DTO
Пример:
use OpenApi\Attributes as OA; use Sonata\Framework\Attributes\Response; use Sonata\Framework\Attributes\Tag; #[Tag('Пользователи')] class UserController { #[Response(UserResponse::class, isArray: true)] public function list(): array { /* ... */ } } final class UserResponse { #[OA\Property(example: 1, description: 'ID пользователя')] public int $id; }
Swagger UI
UI в комплект не входит. Можно:
- Использовать локальные ассеты (как в приложении
view/swagger). - Подключить Swagger UI через CDN и указывать
/openapi.jsonкак источник.