stechstudio / laravel-route-context
提供额外的路由上下文,这些上下文被视为常规路由参数
0.1
2022-01-06 19:28 UTC
Requires
- php: ^8.0
- illuminate/contracts: ^8.73
Requires (Dev)
- nunomaduro/collision: ^5.10
- orchestra/testbench: ^6.22
- phpunit/phpunit: ^9.5
README
这是一个非常小的包,允许您为路由提供额外的上下文。您指定的任何上下文变量都将被视为路由参数。
安装
您已经知道了...
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)。有关更多信息,请参阅许可证文件。