atayahmet/laravel-castable

明确所有输入的类型

v0.0.1 2017-03-02 20:51 UTC

This package is auto-updated.

Last update: 2024-09-17 09:44:13 UTC


README

Build Status Total Downloads License Latest Stable Version

Laravel Castable

Laravel Castable 包是一个类型转换器、输入过滤器或清理器。它可以执行所有这些操作。支持 POSTRAW DATAGET 请求方法。我们的灵感来源于 Laravel Eloquent 数据转换。

要求

PHP 5.6, 7.0+ Laravel 5.3 (LTS) 或 Laravel 5.4 (当前)

开始使用

首先,我们安装包

$ composer require atayahmet/laravel-castable

然后我们需要将服务提供者添加到 app.php

Castable\CastableServiceProvider::class

好了,我们完成了。

让我们看看如何使用 laravel-castable。

可转换的类型

创建可转换的表单请求类

我们创建了一个新的 artisan 命令,灵感来源于 Laravel 内置的 make:request 命令。

$ php artisan make:cast ContactRequest

新的表单请求类形式

<?php

namespace App\Http\Requests;

use Castable\Castable;

class ContactRequest extends Castable
{
    protected $casts = [
        'json' => [
            //
        ],
        'post'  => [
            'name' => 'string',
            'age' => 'integer',
            'student' => 'boolean',
            'interests' => 'collection'
        ],
        'query' => [
            'save' => 'boolean'
        ]
    ];

    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return false;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            //
        ];
    }
}

我们将四个输入添加到 casts 属性中,将状态属性添加到查询字符串参数中,并将年龄、学生和兴趣属性添加到 POST 参数中。

属性的原始和转换类型

POST

查询字符串

为了获得上述结果

<?php

ContactController extends Controller {

  public index(ContactRequest $contactRequest)
  {
      $contactRequest->cast()->input();
  }
}

获取输入

$contactRequest->cast()->input('interests'); // collection

$contactRequest->cast()->input('student') // boolean (true)

$contactRequest->cast()->input('save') // boolean (true)

如果请求是 POST 原始数据

$contactRequest->cast()->json();

$contactRequest->cast()->json('age');

获取原始输入

$contactRequest->input();

获取原始输入

$contactRequest->input('student'); // string (true)

原始原始数据

$contactRequest->json();

向输入添加展示器

您可以向所有 POST、查询和 JSON 输入添加展示器。此功能为您提供过滤输入的机会。

为 POST 参数添加展示器

public function PostNameAttribute($value, $original)
{
    return ucfirst($value);
}

为查询字符串参数添加展示器

public function QuerySaveAttribute($value, $original)
{
    return $value === true ? 1 : 0;
}

为 JSON 原始数据参数添加展示器

public function JsonSaveAttribute($value, $original)
{
    return ucfirst($name);
}

许可

此软件包是开源软件,许可协议为 MIT 许可证