lionix / castable-request

v1.0.1 2021-01-21 06:10 UTC

This package is auto-updated.

Last update: 2024-09-21 13:14:06 UTC


README

Version Total Downloads

此软件包将 Eloquent 模型铸件应用于请求输入。

Laravel SaaS 模板 - Larafast

安装

composer require lionix/castable-request

使用

在你的请求类中实现 Lionix\CastableRequest\Contracts\CastableRequestInterface。您将需要声明一个 casts 方法,该方法将返回应被转换的属性,就像您使用 Eloquent 属性转换 一样。

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use Lionix\CastableRequest\Contracts\CastableRequestInterface;

class PostsIndexRequest extends FormRequest implements CastableRequestInterface
{
    /**
     * Get request casts.
     *
     * @return array
     */
    public function casts(): array
    {
        return [
            'created_after' => 'date',
        ];
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'created_after' => 'date',
        ];
    }
}

此软件包将完成所有魔法,当您访问请求的 created_after 属性时,在这种情况下,它将被转换为一个 Illuminate\Support\Carbon 实例。

namespace App\Http\Controllers;

use App\Http\Requests\PostsIndexRequest;

class PostsController extends Controller
{
    public function index(PostsIndexRequest $request)
    {
        $createdAfterDiff = $request->input('created_after')->diffForHumans();
        // Example value: 1 month from now
    }
}

所有默认的 Eloquent 模型铸件都可用。

Laravel 7.x 开始,您可以定义自己的 自定义铸件 并在请求中使用它。

全局请求铸件

如果您想声明将在全局范围内应用而无需在每个请求类中定义的铸件,您可以在服务提供程序中使用 Lionix\CastableRequest\Contracts\CastsRegistryInterface 并注册全局铸件。

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Lionix\CastableRequest\Contracts\CastsRegistryInterface;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @param \Lionix\CastableRequest\Contracts\CastsRegistryInterface $castRegistry
     *
     * @return void
     */
    public function boot(CastsRegistryInterface $castRegistry)
    {
        $castRegistry->register('created_after', 'date');
    }
}

待办事项

  • 为外观和 request 助手添加全局请求铸件支持。

致谢