所以我有一个包含验证规则和一些消息的表单请求。
这是我在控制器中的函数(通过 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。
这很好,但消息本身深埋在 Vendor 中,我无法对其应用任何翻译,否则会很麻烦。
这是我的表单请求:
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,但它不会通过正常的验证过程。
三国纷争
湖上湖
呼唤远方