ricventu/laravel-route-maze

创建路由的快速简单方法是通过利用“约定优于配置”

v1.1.3 2023-12-29 10:29 UTC

This package is auto-updated.

Last update: 2024-09-08 23:50:25 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

自动生成路由的快速简单方法是通过利用约定优于配置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)。有关更多信息,请参阅许可文件