lorisleiva/request-controller

FormRequest 和 InvokableController 刚刚有了宝宝

v0.1.1 2020-11-15 21:56 UTC

This package is auto-updated.

Last update: 2024-09-17 18:46:38 UTC


README

Latest Version on Packagist GitHub Tests Action Status Total Downloads

你是否厌倦了每次都要为几乎每个可调用的 Controller 创建一个 FormRequest 类?

实际上,经过一些调整后,你可以将 FormRequest 类用作控制器。[了解更多](https://lorisleiva.com/if-formrequests-and-invokable-controllers-had-a-baby/)

此包只提供了一个类:一个扩展了我们所熟知的 FormRequest 类的 RequestController 类,并对它进行了一些调整,使其可以作为可调用的 Controller 使用。

安装

composer require lorisleiva/request-controller

使用方法

class MyController extends RequestController
{
    public function middleware()
    {
        return [];
    }

    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        return [];
    }

    public function __invoke()
    {
        // ...
    }
}

请注意,middlewareauthorizerules 方法都是可选的,默认值如示例所示。

由于 RequestController 扩展了 FormRequest,因此您可以访问所有您习惯使用的方法,例如:

  • $this->get($attribute) — 访问请求属性。
  • $this->route($attribute) — 访问路由参数。
  • $this->validated() — 访问验证数据。
  • $this->user() — 访问用户。
  • 等等。

同样,您可以覆盖您习惯使用的相同 FormRequest 方法,以自定义验证逻辑:

  • attributes() — 为您的属性提供用户友好的名称。
  • message() — 自定义您的验证消息。
  • withValidator() — 扩展当前验证器。
  • validator() — 完全控制创建的验证器。
  • 等等。

享受吧!✨