Штучні індексувачі та агенти дедалі частіше зчитують веб‑контент, але їм не потрібен увесь ваш HTML — навігаційні меню, бандли JavaScript та декоративна розмітка лише заважають. Пакет Spatie Laravel Markdown Response дозволяє вашому Laravel‑додатку виявляти запити від ботів або агентів і повертати чисту версію у markdown.
Ніяких змін у контролерах чи виглядах не потрібно. Пакет працює на рівні middleware: перехоплює відповіді й перетворює HTML на markdown перед відправленням.
composer require spatie/laravel-markdown-response
Пакет реєструється автоматично. Щоб почати, обгорніть маршрути, які хочете віддавати в markdown, middleware ProvideMarkdownResponse:
use Spatie\MarkdownResponse\Middleware\ProvideMarkdownResponse;
Route::middleware(ProvideMarkdownResponse::class)->group(function () {
Route::get('/blog', [BlogController::class, 'index']);
Route::get('/blog/{article}', [BlogController::class, 'show']);
Route::get('/docs/{page}', [DocsController::class, 'show']);
});
Можна також застосувати middleware глобально, щоб охопити всі маршрути.
Middleware визначає запити за трьома механізмами:
Accept: text/markdown.md в URL (наприклад /blog.md)Якщо в URL використано суфікс .md, пакет реєструє глобальний middleware RewriteMarkdownUrls, який знімає суфікс перед маршрутизацією — тому /blog.md звичайно резолвиться в /blog, а конвертація відбувається на виході.
Також можна використовувати PHP‑атрибути безпосередньо в класі контролера або в методі, щоб керувати конвертацією без middleware. #[ProvideMarkdown] вмикає конвертацію для контролера чи дії, а #[DoNotProvideMarkdown] — явно її відключає.
За замовчуванням конвертацію виконує локальний драйвер league/html-to-markdown, але як альтернативу доступний драйвер Cloudflare Workers AI.
Перетворені відповіді кешуються автоматично. TTL за замовчуванням — одна година; поведінку кешування та тривалість можна налаштувати. Щоб опублікувати файл конфігурації:
php artisan vendor:publish --tag="markdown-response-config"
Деякі доступні опції:
| Параметр | За замовчуванням | Опис |
|---|---|---|
enabled |
true |
Увімкнути/вимкнути конвертацію в markdown |
driver |
league |
league або cloudflare |
detect_via_accept_header |
true |
Відповідати на Accept: text/markdown |
detect_via_md_suffix |
true |
Відповідати на URL зі суфіксом .md |
cache.enabled |
true |
Кешувати перетворені відповіді |
cache.ttl |
3600 |
Тривалість кешу в секундах |
Якщо потрібно перетворити HTML у markdown поза middleware, фасад Markdown дає прямий інтерфейс:
use Spatie\MarkdownResponse\Facades\Markdown;
$markdown = Markdown::convert($html);
Повну документацію дивіться на spatie.be/docs/laravel-markdown-response, а вихідний код — на GitHub.
У сучасній веб-розробці аутентифікація є ключовою для захисту додатків і даних користувачів. Дізнайтеся, як модуль nuxt-sanctum-authentication спростить інтеграцію між Nuxt 3 та Laravel Sanctum, забезпечуючи надійний і зручний спосіб реалізації аутентифікації для вашого проєкту
Laravel Livewire випустив нову версію 3.6, яка приносить з собою цікаві HTML-директиви для управління видимістю DOM-елементів і JavaScript-діями. Досліджуйте нові можливості Livewire, що допоможуть вам створити ще більш інтерактивні користувацькі інтерфейси!
Хочете забезпечити повну прозорість у своїх Laravel-додатках? Пакет Laravel Audit Log допоможе вам детально відстежувати всі зміни моделей Eloquent та відповідати вимогам регуляторів. Читайте далі, щоб дізнатися, як цей потужний інструмент може підвищити надійність вашого проєкту