saritasa / laravel-controllers
此包已被废弃,不再维护。没有推荐替代包。
Saritasa 控制器用于典型操作
5.0.1
2024-01-12 22:07 UTC
Requires
- php: >=8.0
- ext-json: *
- laravel/framework: ^9.0 | ^10.0
- laravel/ui: ^4.0
- saritasa/laravel-fluent-validation: ^1.3
- tymon/jwt-auth: ^2.0
Requires (Dev)
- mockery/mockery: ^1.1
- phpunit/phpunit: >=9.0
- squizlabs/php_codesniffer: ^3.0
- dev-master / 5.x-dev
- 5.0.1
- 5.0.0
- 4.1.0
- 4.0.2
- 4.0.1
- 4.0.0
- 3.4.0
- 3.3.5
- 3.3.4
- 3.3.3
- 3.3.2
- 3.3.1
- 3.3.0
- 3.2.0
- 3.1.1
- 3.1.0
- 3.0.5
- 3.0.4
- 3.0.3
- 3.0.2
- 3.0.1
- 3.0.0
- 2.0.x-dev
- 2.0.8
- 2.0.7
- 2.0.6
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 1.0.13
- 1.0.12
- 1.0.11
- 1.0.10
- 1.0.9
- 1.0.8
- 1.0.7
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- dev-3_3_5_extension
- dev-bugfix/#14-wrong-router-behavior-with-custom-route-key
- dev-maxermolenko-patch-1
This package is auto-updated.
Last update: 2024-09-07 08:14:55 UTC
README
Laravel 中常见 UI 和端点的控制器,
例如 API 认证、密码更改、登录页面等。
Laravel 9.x/10.x
安装 saritasa/laravel-controllers
包
$ composer require saritasa/laravel-controllers
可用控制器
有 2 种类型的控制器
- Web - 为用户提供的交互式 UI - 传统 Laravel 控制器。
其中许多只是提供开箱即用的 Laravel 功能,
使用内置特性。 - Api - 用于与第三方应用程序进行程序集成,
例如移动应用(iOS、Android)或基于现代前端框架的单页 HTML 应用程序,
如 React.JS、AngularJS、VueJs 等。
API 使用 Dingo/Api 库
以及对其的扩展:saritasa/dingo-api-custom
以下描述的控制器存在,但您必须手动为其注册路由
方法
- function json($data, IDataTransformer $transformer = null): Response
示例:
class UserApiController extends BaseApiController { public function __construct(UserTransformer $userTransformer) { parent::__construct($userTransformer); } public function editUserProfile(Request $request, User $user): Response { $this->validate($request, $user->getRuels()); $user->fill($request->all()); $user->save(); return $this->json($user); } }
JWTAuthApiController 认证 API 控制器。使用 JWT 认证
利用 Dingo(Api) JWT 认证
设置和底层 tymon\jwt-auth
示例: routes\api.php
app('api.router')->version(config('api.version'), ['namespace' => 'Saritasa\Laravel\Controllers\Api'], function (\Dingo\Api\Routing\Router $api) { // Authentication $api->post('auth', 'AuthController@login'); // Login $api->put('auth', 'AuthController@refreshToken'); // Refresh expired token $api->delete('auth', 'AuthController@logout')->middleware('api.auth'); // Logout });
自定义登录请求
在某些情况下,我们使用 email
字段进行带有 email
或 username
的登录。因此,email
字段应通过 required
和 string
规则进行验证。或者您想使用 username
而不是 email
。
如何将 ILoginRequest 绑定到自定义请求类
<?php namespace App\Providers; use App\Http\Requests\Auth\LoginRequest; use Illuminate\Support\Facades\URL; use Illuminate\Support\ServiceProvider; use Saritasa\LaravelControllers\Requests\Concerns\ILoginRequest; class AppServiceProvider extends ServiceProvider { public function boot() { $this->app->bind(ILoginRequest::class, LoginRequest::class); } }
<?php namespace App\Http\Requests\Auth; use Illuminate\Foundation\Http\FormRequest; use Saritasa\LaravelControllers\Requests\Concerns\ILoginRequest; class LoginRequest extends FormRequest implements ILoginRequest { /** * @inheritDoc */ public function rules(): array { return [ 'username' => 'required|string', 'password' => 'required|string', ]; } }
ForgotPasswordApiController、ResetPasswordApiController 这些控制器负责处理密码重置电子邮件。
在 JSON API 中使用原生 Laravel 密码管理,无 UI。
示例: routes\api.php
app('api.router')->version(config('api.version'), ['namespace' => 'Saritasa\Laravel\Controllers\Api'], function (\Dingo\Api\Routing\Router $api) { $api->post('auth/password/reset', 'ForgotPasswordApiController@sendResetLinkEmail'); $api->put('auth/password/reset', 'ResetPasswordApiController@reset'); });
贡献
- 创建分支,检出它
- 本地开发如常。**代码必须遵循 PSR-1、PSR-2**
运行 PHP_CodeSniffer 确保代码遵循风格指南 - **用单元测试添加功能覆盖** 并运行 PHPUnit 确保所有测试通过
- 更新 README.md 以描述新的或更改的功能
- 将更改描述添加到 CHANGES.md 文件。使用 语义版本控制 约定确定下一个版本号。
- 准备好后,创建拉取请求
创建快捷方式
如果您已安装 GNU Make,您可以使用以下快捷方式
make cs
(代替php vendor/bin/phpcs
)-
使用 PHP_CodeSniffer 运行静态代码分析
以检查代码风格make csfix
(代替php vendor/bin/phpcbf
)-
使用 PHP_CodeSniffer 自动修复代码风格违规(例如,PSR-2 代码格式违规)
,尽可能(例如,PSR-2 代码格式违规)make test
(代替php vendor/bin/phpunit
)-
使用 PHPUnit 运行测试make install
- 代替composer install
*make all
或不带参数的make
-
依次执行上述 install、cs、test 任务
项目将被组装,通过 linter 检查并通过单一命令进行测试