alvarofpp / expand-request
一个使操作请求变得容易的包及更多
Requires
- php: >=7.2.0
Requires (Dev)
- laravel/laravel: >=6.0
This package is auto-updated.
Last update: 2024-02-27 19:55:34 UTC
README
一个使操作请求变得容易的包及更多。
内容
安装
通过composer安装
composer require alvarofpp/expand-request
用法
此包目前包含
- 检查请求URL是否属于某个模式。
- 添加要验证的URL参数。
- 重命名URL参数。
- 移除多余的参数。
检查当前请求URL是否属于某个模式
您可以使用这些方法检查请求URL是否属于URL模式或路由模式:
is_url($patterns, $request = null)
is_route($patterns, $request = null)
默认情况下,$request
是当前请求。
示例:您可以使用此功能激活菜单中的类,例如
<li class="nav-item "> <a class="{{ is_route('courses.index') ? 'open' : '' }}" href="{{route('courses.index')}}"> <span class="item-name">Show courses</span> </a> </li>
这些方法接受一个数组作为第一个参数,因此您可以检查各种模式
<li class="nav-item "> <a class="{{ is_route(['courses.index', 'contents.index',]) ? 'open' : '' }}" href="{{route('courses.index')}}"> <span class="item-name">Show courses</span> </a> </li>
另一个示例是您可以使用它来检查用户来自哪里
<?php // ... $previousUrl = app('request')->create(url()->previous()); if (is_url('courses/create', $previousUrl)) { // Do something... }
UrlParameters
在FormRequest中添加要验证的URL参数。在您的FormRequest中使用UrlParameters
特质,例如
<?php namespace App\Http\Requests\Course; use Alvarofpp\ExpandRequest\Traits\UrlParameters; use Illuminate\Foundation\Http\FormRequest; class ShowRequest extends FormRequest { use UrlParameters; // ... }
如果您的URL是 [GET] /courses/{course}
,您可以在 $rules
中验证参数 course
<?php // ... public function rules() { return [ 'course' => ['required', 'exists:courses,id',], ]; } // ...
重命名URL参数
如果您想重命名参数,只需声明变量 $renameUrlParameters
。示例:您有一个URL /courses/{course}/contents/{content}/videos/{video}
,您可以使用
<?php namespace App\Http\Requests\Course; use Alvarofpp\ExpandRequest\Traits\UrlParameters; use Illuminate\Foundation\Http\FormRequest; class ShowRequest extends FormRequest { use UrlParameters; protected $renameUrlParameters = [ 'course_id', 'content_id', 'video_id', ]; /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { return [ 'course_id' => ['required', 'exists:courses,id',], 'content_id' => ['required', 'exists:contents,id',], 'video_id' => ['required', 'exists:videos,id',], ]; } // ... }
在数组中声明索引以决定哪个参数将更改
<?php // ... protected $renameUrlParameters = [ 0 => 'course_id', // 1 => 'content_id', 2 => 'video_id', ]; // ...
移除多余的参数
在您的FormRequest中使用RemoveExtraParameters
特质来移除多余的参数
<?php namespace App\Http\Requests\Course; use Alvarofpp\ExpandRequest\Traits\RemoveExtraParameters; use Illuminate\Foundation\Http\FormRequest; class ShowRequest extends FormRequest { use RemoveExtraParameters; // ... }
此特质使用$accept
属性。默认情况下,$accept
中的值是rules()
和attributes()
中存在的键的合并。您可以在FormRequest中指定$accept
来指定哪些字段被接受。
<?php namespace App\Http\Requests\Course; use Alvarofpp\ExpandRequest\Traits\RemoveExtraParameters; use Illuminate\Foundation\Http\FormRequest; class ShowRequest extends FormRequest { use RemoveExtraParameters; protected $accept = [ 'field_1', 'field_2', ]; // ... }
在这个例子中,如果您收到一个如{"field_1": 50, "field_2": 100, "extra_field": 1}
的请求,那么extra_field
将被从该请求中移除。
贡献
欢迎贡献。Fork、改进并提交pull request。对于错误、改进想法或其他问题,请创建一个问题。