ricventu / laravel-route-maze
创建路由的快速简单方法是通过利用“约定优于配置”
v1.1.3
2023-12-29 10:29 UTC
Requires
- php: ^8.1
- illuminate/contracts: ^10.0
- spatie/laravel-package-tools: ^1.14.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.8
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^8.8
- pestphp/pest: ^2.20
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- spatie/laravel-ray: ^1.26
README
自动生成路由的快速简单方法是通过利用约定优于配置和PHP属性。
这意味着路由将根据控制器目录结构和方法的属性自动生成。
这样,您不必手动在web.php或api.php文件中编写路由,只需遵循一些文件命名和组织规则即可。
路由组基于控制器的子目录。
让我们通过一个实际例子来看看如何操作。
控制器: App/Http/Controllers/SomeCategory/ProductsController.php
class ProductsController { // index and __invoke defaults to GET public function index() {...} #[Get] public function show($id) {...} #[Post] public function store(Request $request) {...} #[Patch] public function update($id, Request $request) {...} #[Delete] public function destroy($id) {...} }
要获取路由,请在routes/web.php
中添加以下行
Route::maze(app_path('Http/Controllers'), 'App\\Http\\Controllers');
生成的路由是
Route::get('/some-category/products', 'SomeCategory\ProductsController@index')->name('some-category.products'); Route::get('/some-category/products/show/{id}', 'SomeCategory\ProductsController@show')->name('some-category.products.show'); Route::post('/some-category/products/store', 'SomeCategory\ProductsController@store')->name('some-category.products.store'); Route::Patch('/some-category/products/update/{id}', 'SomeCategory\ProductsController@update')->name('some-category.products.update'); Route::delete('/some-category/products/destroy/{id}', 'SomeCategory\ProductsController@destroy')->name('some-category.products.destroy');
路径中的参数
可以在路径中指定参数,通过命名目录为_param-name_
。
Http/Controllers/_param1_/ItemsController.php
class ItemsController { #[Get] public function get($id) {...} }
变为
Route::get('/{param1}/items/get/{id}', 'ItemsController@get')->name('items.get');
中间件
您可以通过在控制器目录中添加名为middleware.php
的文件来指定中间件组。
return [ 'auth', ];
命名规范
Uri和路由名称由目录名称、控制器名称的第一部分(在Controller
之前)和方法名称组成,全部使用短横线连接。
示例
禁用特定控制器的发现
要禁用指定控制器的路由发现,请添加静态方法mazeDisabled
,该方法返回true
在路径配置中
如果在路径中存在名为maze.php
的文件,则将使用该文件来配置路由组。
return [
];
## Installation You can install the package via composer: ```bash composer require ricventu/laravel-route-maze
用法
Route::maze(app_path('Http/Controllers'), 'App\\Http\\Controllers');
测试
composer test
变更日志
请参阅CHANGELOG以获取有关最近更改的更多信息。
贡献
请参阅CONTRIBUTING以获取详细信息。
安全漏洞
请查阅我们的安全策略以了解如何报告安全漏洞。
性能提示
在生产部署中,建议使用Laravel内置的route:cache
命令缓存路由发现。
致谢
许可
MIT许可(MIT)。有关更多信息,请参阅许可文件。