我有一个使用 php 8.2 的 laravel 9x 应用程序。 该应用程序有一个 API 可以从表单组装表单接收数据。此表单以 application/x-www-form-urlencoded 的形式发送数据。如果出现错误,例如验证错误,它不会发回响应。相反,它会将其视为 Web 数据,并尝试重定向到主页。我知道如果它作为 application/json 数据发送,它会工作得很好。但是,表单装配不提供此选项。当没有错误响应时,调试起来非常困难。 Laravel Daily 在解释这一点方面做得很好here,但当涉及到 application/x-www-form-urlencoded 数据时,我似乎找不到太多答案。 有什么办法可以解决这个问题或有其他建议吗?
class ApplicationsController extends Controller
{
use HasApplicationEmail, EmailsTrait;
public function store(CreateApplicationRequest $request)
{
...
}
class CreateApplicationRequest extends FormRequest
{
public function rules()
{
return [
'email' => ['required', 'email'],
'event_slug' => ['required'],
'application_fee' => ['required', 'numeric'],
'applicant_birthdate' => ['required'],
'applicant_gender' => ['required'],
'marital_status' => ['required'],
'applicant_street_1' => ['required'],
'applicant_city' => ['required'],
'applicant_state_province' => ['required'],
'applicant_zip' => ['required'],
'applicant_country' => ['required'],
'applicant_phone' => ['required'],
'transaction_number' => ['required'],
];
}
public function authorize()
{
return true;
}
}
我最终通过 aynber 的建议找到了解决方案这里。
在createApplicationRequest中,我添加了
protected function failedValidation(Validator $validator)
{
throw new HttpResponseException(response($validator->errors(), Response::HTTP_UNPROCESSABLE_ENTITY));
}
这返回了带有错误的响应并且工作完美。