thejawker/laravel-route-module-macro

暴露模块概念以强制执行 CRUD 和 Restful 路由和命名约定。

0.1.3 2019-09-11 21:33 UTC

README

Latest Version on Packagist Build Status Quality Score Total Downloads

此包适用于 Laravel 5.5。它深受伟大的 Freek van der Herten 以及他们的 Blender 包 的启发,其中有一个用于模块的宏。这真的很符合 CRUD/Restful 路由方法。

安装

从 Composer 安装包

composer require thejawker/laravel-route-module-macro

从 Laravel 5.5 开始,它将神奇地注册包。

使用

您可以在任何路由文件中添加 Route::module('name', ['only'](可选), ['options](可选))。第二个参数允许您 only 使用特定的操作,第三个是通用选项。有关这些信息,请参阅 Laravel 文档

示例

完整资源

routes/api.php

Route::module('posts');
$ php artisan route:list
+-----------+-----------------------------------------+---------------+---------------------------------------------------------------------------+
| Method    | URI                                     | Name          | Action                                                                    |
+-----------+-----------------------------------------+---------------+---------------------------------------------------------------------------+
| POST      | api/posts                               | posts.store   | App\Http\Controllers\PostsController@store                                |
| GET|HEAD  | api/posts                               | posts.index   | App\Http\Controllers\PostsController@index                                |
| GET|HEAD  | api/posts/create                        | posts.create  | App\Http\Controllers\PostsController@create                               |
| DELETE    | api/posts/{post}                        | posts.destroy | App\Http\Controllers\PostsController@destroy                              |
| PUT|PATCH | api/posts/{post}                        | posts.update  | App\Http\Controllers\PostsController@update                               |
| GET|HEAD  | api/posts/{post}                        | posts.show    | App\Http\Controllers\PostsController@show                                 |
| GET|HEAD  | api/posts/{post}/edit                   | posts.edit    | App\Http\Controllers\PostsController@edit                                 |
+-----------+-----------------------------------------+---------------+---------------------------------------------------------------------------+

仅资源

routes/api.php

Route::module('posts', ['store']);
$ php artisan route:list
+-----------+-----------------------------------------+---------------+----------------------------------------------------------------------------+
| Method    | URI                                     | Name          | Action                                                                     |
+-----------+-----------------------------------------+---------------+----------------------------------------------------------------------------+
| POST      | api/posts                               | posts.store   | App\Http\Controllers\PostsController@store                                 |
+-----------+-----------------------------------------+---------------+----------------------------------------------------------------------------+

嵌套资源

这将强制您编写有意义的控制器。嵌套 users.posts 将要求您创建一个具有所需操作的 UserPostsController。routes/api.php

Route::module('users.posts');
$ php artisan route:list
+-----------+-----------------------------------------+---------------------+----------------------------------------------------------------------------+
| Method    | URI                                     | Name                | Action                                                                     |
+-----------+-----------------------------------------+---------------------+----------------------------------------------------------------------------+
| POST      | api/users/{user}/posts                  | users.posts.store   | App\Http\Controllers\UserPostsController@store                             |
| GET|HEAD  | api/users/{user}/posts                  | users.posts.index   | App\Http\Controllers\UserPostsController@index                             |
| GET|HEAD  | api/users/{user}/posts/create           | users.posts.create  | App\Http\Controllers\UserPostsController@create                            |
| DELETE    | api/users/{user}/posts/{post}           | users.posts.destroy | App\Http\Controllers\UserPostsController@destroy                           |
| PUT|PATCH | api/users/{user}/posts/{post}           | users.posts.update  | App\Http\Controllers\UserPostsController@update                            |
| GET|HEAD  | api/users/{user}/posts/{post}           | users.posts.show    | App\Http\Controllers\UserPostsController@show                              |
| GET|HEAD  | api/users/{user}/posts/{post}/edit      | users.posts.edit    | App\Http\Controllers\UserPostsController@edit                              |
+-----------+-----------------------------------------+---------------------+----------------------------------------------------------------------------+

测试

此包绝对需要一些深入的测试。

composer test

许可

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