Laravel: Прив'язка маршрутів з обмеженнями для керування вкладеними ресурсами

Перекладено ШІ 3 Laravel News 02 червня, 2026

Laravel пропонує революційний підхід до роботи з вкладеними ресурсами завдяки автоматичній валідації зв'язків між батьками і дітьми. Хочете дізнатися, як це спростить створення безпечних та зрозумілих URL-структур? Читайте далі

Scoped implicit model binding у Laravel змінює підходи розробників до роботи з вкладеними ресурсами, автоматично забезпечуючи зв'язки між батьківськими і дочірніми елементами. Ця функція усуває потребу в ручній перевірці, покращуючи структуру URL для ієрархічних даних.

Метод scoped дозволяє автоматичну валідацію зв'язків під час визначення вкладених маршрутів:

use App\Http\Controllers\OrderItemController;

Route::resource('orders.items', OrderItemController::class)->scoped([
    'item' => 'sku',
]);

Ця конфігурація створює URL-адреси у форматі /orders/{order}/items/{item:sku}, де Laravel автоматично перевіряє, що кожен товар належить до свого заданого замовлення.

Laravel використовує правила наіменування для визначення зв'язків між моделями. Фреймворк вважає, що модель батька має метод зв'язку, що відповідає назві параметра маршруту у множині. Коли запит робиться до /orders/123/items/ABC789, Laravel здійснює запит до зв'язку items у моделі Order, щоб знайти товар зі SKU "ABC789".

Яскравий приклад цієї функціональності — створення системи управління запасами для електронної комерції:

Route::resource('warehouses.products', WarehouseProductController::class)->scoped([
    'product' => 'barcode',
]);

class Warehouse extends Model
{
    public function products()
    {
        return $this->hasMany(Product::class);
    }
}

class Product extends Model
{
    public function warehouse()
    {
        return $this->belongsTo(Warehouse::class);
    }
}

class WarehouseProductController extends Controller
{
    public function edit(Warehouse $warehouse, Product $product)
    {
        return view('inventory.edit', compact('warehouse', 'product'));
    }

    public function update(Warehouse $warehouse, Product $product, Request $request)
    {
        $product->update($request->validated());
        return redirect()->route('warehouses.products.show', [$warehouse, $product]);
    }
}

Фреймворк автоматично повертає 404 помилки, якщо спробувати отримати доступ до товарів, які не існують у заданому складі. Структура URL /warehouses/east-coast/products/BAR123456 гарантує цілісність даних без додаткової логіки контролера, при цьому зберігаючи чисті й зрозумілі маршрути

Популярні

Інше, що варто прочитати

14 Оновлено 02 червня, 2026

Claude Agent тепер інтегрований в AI Assistant для PhpStorm

Ви коли-небудь задумувалися, як полегшити свою роботу в Laravel? У нашій статті ми розглядаємо, як інтеграція Claude Code в PhpStorm може підвищити вашу продуктивність, спростивши процес написання коду та навчання нових розробників. Читайте далі, щоб дізнатися більше про переваги та функціональність цього потужного поєднання

11 Оновлено 02 червня, 2026

Управління доступом у Filament за допомогою плагіна Shield

Дізнайтеся, як пакет Filament Shield забезпечує управління доступом до ваших панелей, ресурсів і віджетів у Laravel. Ця стаття розкриває основні можливості пакету, включаючи просту установку та підтримку багатокористувацьких середовищ — не пропустіть!

84 Оновлено 02 червня, 2026

Все, що потрібно знати про Laravel 13

Laravel 13 вийде в березні 2026 року й вимагатиме мінімум PHP 8.3. Хочете дізнатися, як PHP‑атрибути для моделей, нові налаштування черг і метод Cache::touch() вплинуть на вашу розробку?