nickescobedo / cambia
轻松转换您的请求属性。
v1.0.1
2024-07-27 03:53 UTC
Requires
- php: ^8.2|^8.3
- illuminate/http: ^10.0|^11.0
Requires (Dev)
- orchestra/testbench: ^9.1
README
在 Laravel 中转换请求输入。
安装
composer require nickescobedo/cambia
基本用法
- 将
NickEscobedo\Cambia\CastRequestAttributes
特性添加到您的请求类中。 - 在请求类中添加一个返回数组的
casts
函数。 - 通过请求属性访问
$request->castedInput('inputKey')
。注意:在尝试转换之前,请求键必须在规则中验证。
示例
class Cast extends FormRequest { use CastRequestAttributes; public function rules(): array { return [ 'toBoolean' => 'string', // Fields not present in validation will not cast ]; } public function casts(): array { return [ 'toBoolean' => 'boolean', ]; } }
$request->castedInput('toBoolean')
将返回一个布尔值。
支持的转换
- int
- integer
- float
- double
- decimal:int
- string
- boolean
- object
- array
- json
- collection
- date
- datetime 或 datetime:format
- immutable_date
- immutable_datetime 或 immutable_datetime:format
- timestamp
自定义转换
自定义转换允许更复杂的转换逻辑。可以使用枚举和自定义类。自定义转换类必须实现 NickEscobedo\Cambia\CastsRequestAttributes
。
枚举
enum Status: string { case Pending = 'pending'; }
public function casts(): array { return [ 'status' => Status::class, ]; }
自定义转换类
该类必须实现 NickEscobedo\Cambia\CastsRequestAttributes
。
use Illuminate\Http\Request; use NickEscobedo\Cambia\CastsRequestAttributes; class JsonCast implements CastsRequestAttributes { public function get(Request $request, string $key, mixed $value, array $attributes) { return json_decode($value, true); } }
class Cast extends FormRequest { use CastRequestAttributes; public function rules(): array { return [ 'toBoolean' => 'string', // Fields not present in validation will not cast ]; } public function casts(): array { return [ 'toBoolean' => JsonCast::class, ]; } }