shureban / laravel-easy-request
Laravel中编写请求方法的简单方式
1.0.0
2024-06-08 20:02 UTC
Requires
- php: ^8.1
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。