php - 使用表单请求时 Laravel 的“给定数据无效”
问题描述
所以我有一个包含验证规则和一些消息的表单请求。
这是我在控制器中的功能(通过 vue.axios 调用)
public function store(TaskFormRequest $request, TaskService $service): JsonResponse
{
$data = $request->validated();
if (!$task = $service->create($data)) {
return JsonResponse::create(['message' => __('Can\'t create Task')], 400);
}
return JsonResponse::create(
[
'task_id' => $task->id,
'message' => __('Task was successfully added.'),
]
);
}
它工作正常,除了在未验证数据时调用存储的时刻(并且 $request 被视为 TaskFormRequest 实例)它返回“给定数据无效”JsonResponse 除了来自表单的错误消息。
这很好,但消息本身深埋在供应商中,我无法对其应用任何翻译,否则会很麻烦。
这是我的表单请求:
public function authorize(): bool
{
return $this->user()->role === 'administrator';
}
public function rules(): array
{
return [
'subject' => 'required',
'date' => 'nullable|date_format:Y-m-s',
'user' => 'nullable|exists:users,id',
'task_list_id' => 'required|exists:task_lists,id',
'privacy' => 'array',
];
}
public function messages() {
return [
'subject.required' => __("Task name is empty")
];
}
我想一起停止这个响应,只留下表单中的错误。或者至少自定义它。
编辑:我认为问题是请求是空的?如果我null
在函数的参数中输入一个默认值store
,我可以检查空的 $request 并返回一个 JsonResponse,但是它不会通过正常的验证过程。
解决方案
我也在努力解决同样的问题。如果您的验证代码在 try 块中,您将收到“给定数据无效”错误。从 try 块中删除它,您将得到 Laravel 给出的正确错误响应。
推荐阅读
- vba - 尝试创建搜索/复制/粘贴 VBA 代码
- c# - 检查转录作业状态
- java - 如何使用jackson 2将集合的子类序列化和反序列化为已知集合
- arrays - 从正整数数组中找到唯一的三个数字集合的算法
- internet-explorer - 当将 svg 转换为数据 url 作为 ie9+ 中 img 元素的 src 时,类样式丢失
- spring - Spring请求范围的bean内部
- javascript - 开玩笑:按钮处理程序单击引发错误
- java - 使用 Http11NioProtocol 在 Tomcat SSL 中启用 SSL
- jenkins - 在 Jenkins 管道中使用路径(当前路径)运行 sed 脚本
- ios - iOS,相机胶卷从 URL 保存照片并保留照片的 exif 元数据