بدون شک شما هم تا کنون از validation لاراول برای اعتباری سنجی درخواست های کاربران استفاده کرده اید. همانطور که می دانید اگر مقادیر دریافتی توسط کلاس validation لاراول تایید نشود پیغام خطایی بصورت زیر برای کاربر برگشت داده خواهد شد:
{
"username": [
"The username field is required."
],
"email": [
"The email field is required."
],
"fullname": [
"The fullname field is required."
]
}
حال شاید شما دوست داشته باشید این پیغام را شخصی سازی کرده تا در صورت خطا در اعتباری سنجی, پیغام خطا بصورتی که شما نیاز دارید یا شخصی سازی کرده اید مثلا بصورت زیر برای کاربران ارسال شود.
[
"The username field is required.",
"The email field is required.",
"The fullname field is required."
]
این کار را می توانید با override دو تابع در Controller ایجاد نمایید.
به دایرکتوری App\Http\Controllers رفته و فایل Controller.php را باز و کدهای زیر را جایگزین کدهای درون این فایل کنید.
namespace App\Http\Controllers;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Validation\Validator;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
// custom error message display
protected function formatValidationErrors(Validator $validator)
{
return $validator->errors()->all();
}
// custom validation error status code to 400 (instead of 422)
protected function buildFailedValidationResponse(Request $request, array $errors)
{
if ($request->expectsJson()) {
return new JsonResponse($errors, 400);
}
return redirect()->to($this->getRedirectUrl())
->withInput($request->input())
->withErrors($errors, $this->errorBag());
}
}
همانطور که می بینید ما دو تابع جدید به این فایل اضاف کرده ایم.
formatValidationErrors: که کار نمایش خطا ها را نمایش میدهد
buildFailedValidationResponse: که کار نمایش خطای ۴۰۰ درصورت شکست در اعتبار سنجی را به جای خطای 422 انجام خواهد داد.
شما می توانید این توابع را به صورت دلخواه خود تغییر دهید تا بتوانید بهترین پاسخ شخصی سازی شده را دریافت کنید.
درصورتی که شما هم راه های دیگری برای شخصی سازی پیغام های خطا دارید از بخش نظرات برای ما ارسال کنید.
برای اطلاع از پاسخ به نظر شما می توانید ایمیل یا شماره موبایل خود را وارد نمایید. *
ایمیل و شماره موبایل شما کاملا مخفی خواهد ماند و در سایت نمایش داده نخواهد شد. *
هنوز برای این مطلب نظری ارسال نشده است!