在蛇的情况下,我试图自定义laravel验证以返回传入的密钥,因此我可以使用这些值插入模型,而无需执行以下操作:
User::query()->create([
'email_address' => $data['emailAddress']
]);
我找到了执行此操作并从$this->validate
方法返回数据的方法。
我已经更改了方法,因此它以蛇形格式返回:
protected function extractInputFromRules(Request $request, array $rules)
{
return $request->only(collect($rules)->keys()->map(function ($rule) {
return Str::contains($rule, '.') ? Str::snake(explode('.', $rule)[0]) : Str::snake($rule);
})->unique()->toArray());
}
如您所见,我在字面上添加了Str::snake($rule)
。
自从我添加了此内容之后,在端点上我只发送带有主体的请求
{
"emailAddress": "example@domain.com"
}
数据以[]
的形式返回。
如果我在dd
方法中执行了extractFromInput
,我可以看到它已经正确地转换成蛇形了,所以emailAddress
变成了email_address
,但是就像我说的较早的数组不能正确返回,因为它为空。
public function resetPassword(Request $request)
{
$data = $this->validate($request, [
'emailAddress' => ['required', 'email']
]);
dd($data);
}