saritasa/laravel-controllers

此包已被废弃,不再维护。没有推荐替代包。

Saritasa 控制器用于典型操作

5.0.1 2024-01-12 22:07 UTC

README

PHP Unit PHP CodeSniffer codecov Release PHPv Downloads

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.JSAngularJSVueJs 等。
    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 字段进行带有 emailusername 的登录。因此,email 字段应通过 requiredstring 规则进行验证。或者您想使用 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');
  });

贡献

  1. 创建分支,检出它
  2. 本地开发如常。**代码必须遵循 PSR-1PSR-2**
    运行 PHP_CodeSniffer 确保代码遵循风格指南
  3. **用单元测试添加功能覆盖** 并运行 PHPUnit 确保所有测试通过
  4. 更新 README.md 以描述新的或更改的功能
  5. 将更改描述添加到 CHANGES.md 文件。使用 语义版本控制 约定确定下一个版本号。
  6. 准备好后,创建拉取请求

创建快捷方式

如果您已安装 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 -
    依次执行上述 installcstest 任务
    项目将被组装,通过 linter 检查并通过单一命令进行测试

资源