stechstudio/laravel-route-context

提供额外的路由上下文,这些上下文被视为常规路由参数

0.1 2022-01-06 19:28 UTC

This package is auto-updated.

Last update: 2024-09-07 02:01:02 UTC


README

Latest Version on Packagist

这是一个非常小的包,允许您为路由提供额外的上下文。您指定的任何上下文变量都将被视为路由参数。

安装

您已经知道了...

composer require stechstudio/laravel-route-context

用法

想法是,有时您想在路由层提供额外的上下文的同时重用控制器方法或Livewire全页组件。

想象一下,您需要列出支持工单,并且您有一个控制器和一个视图来处理这个功能。您有多个端点,工单可能会以略有不同的方式显示。

使用此包,您可以在您的路由旁边指定额外的上下文,如下所示

Route::get('tickets', [TicketController::class, 'index']);
Route::get('tickets/archived', [TicketController::class, 'index'])->with([
    'archived' => true
]);
Route::get('tickets/mine', [TicketController::class, 'index'])->with([
    'user' => fn() => auth()->user()
]);
Route::get('tickets/{user}', [TicketController::class, 'index']);

现在在您的 TicketController 中,您可以注入您的上下文变量,就像它们是路由参数一样

public function index(User $user, $archived = false) {
    $tickets = Tickets::query()
        ->when($user->exists, fn($q) => $q->where('user_id', $user->id))
        ->when(!$archived, fn($q) => $q->whereNull('archived_at'))
        ->paginate();
}

请注意,上下文值可以是回调函数,如果需要在您的应用程序启动后、会话启动、认证可用等之后评估,则可以使用它。

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件