shureban/laravel-easy-request

Laravel中编写请求方法的简单方式

安装: 6

依赖者: 0

建议者: 0

安全: 0

星级: 3

关注者: 1

分支: 0

开放问题: 0

类型:laravel-package

1.0.0 2024-06-08 20:02 UTC

This package is auto-updated.

Last update: 2024-09-08 20:39:47 UTC


README

安装

使用以下命令通过composer安装此包:

composer require shureban/laravel-easy-request

将以下类添加到config/app.php中的providers数组中:

Shureban\LaravelEasyRequest\EasyRequestServiceProvider::class,

您还可以发布配置文件来更改实现(例如,将接口更改为特定类)。

php artisan vendor:publish --provider="Shureban\LaravelEasyRequest\EasyRequestServiceProvider"

如何使用

您需要的所有内容,那就是为您的请求类编写PHPDoc。

例如

/**
 * @method string name()
 * @method boolean isConfirmed()
 * @method bool isAdult()
 * @method integer age()
 * @method int size()
 * @method float salary()
 * @method array workingDays()
 * @method mixed description()
 * @method additionalInformation()
 * @method string|null managerName()
 * @method DateTime birthday()
 * @method Carbon firstWorkingDay()
 */
class CustomRequest extends \Illuminate\Foundation\Http\FormRequest
{
}

class RegistrationController extends Controller
{
    public function __invoke(CustomRequest $request): JsonResponse
    {
        dd(
            $request->name(), // return value with string type
            $request->isConfirmed(), // return value with bool type
            $request->isAdult(), // return value with bool type
            $request->age(), // return value with integer type
            $request->size(), // return value with integer type
            $request->salary(), // return value with float type
            $request->workingDays(), // return array value
            $request->description(), // return original value
            $request->additionalInformation(), // return original value
            $request->managerName(), // return string value or NULL
            $request->birthday(), // return date with type DateTime
            $request->firstWorkingDay(), // return date as Carbon type
        );    
    }
}

如果您的编写方法使用camelCase格式,而您的请求数据使用snake_case,这不会是问题。您可以使用任何一种情况来获取您的值。

例如

/**
 * @method int userId()
 * @method int client_id()
 */
class CustomRequest extends \Illuminate\Foundation\Http\FormRequest
{
    public function rules(): array
    {
        return [
            'user_id' => ['required', 'int'],
            'clientId' => ['required', 'int'],
        ];
    }
}

class RegistrationController extends Controller
{
    public function __invoke(CustomRequest $request): JsonResponse
    {
        dd(
            $request->userId(), // return value for field user_id
            $request->client_id(), // return value for field clientId
        );    
    }
}

如果您需要与模型一起工作,并通过field_id获取模型,那很简单。

例如

/**
 * @method User user()
 */
class CustomRequest extends \Illuminate\Foundation\Http\FormRequest
{
    public function rules(): array
    {
        return [
            'user_id' => ['required', 'int'],
        ];
    }
}

class RegistrationController extends Controller
{
    public function __invoke(CustomRequest $request): JsonResponse
    {
        dd(
            $request->user(), // return instance of models User
        );    
    }
}

您必须将您的属性命名为以_id结尾或Id(大驼峰命名),并设置方法类型为继承自Model。