Yêu cầu Feb 22nd, 2019 9:27 a.m. 147 0 2
  • 147 0 2
0

Custom validation trong Laravel

Chia sẻ
  • 147 0 2

Mình đang xử lí validation bằng FormRequest, giờ muốn custom lại với mỗi lỗi thì trả ra 1 mã code, đại tỉ như sau

    public function rules()
    {
        return [
            'channels' => 'required|array',

        ];
    }

    protected function failedValidation(Validator $validator)
    {
    if(lỗi do required)
         throw new HttpResponseException(response()->json($errors, 411)); //Trả về code 411 
    }

    if(lỗi do array) {
        throw new HttpResponseException(response()->json($errors, 412)); //Trả về code 412
}

Nhưng đang vướng k biết check if kiểu gì, có bạn nào làm rồi cho mình xin giải pháp với ạ. Cảm ơn mọi người

2 CÂU TRẢ LỜI


Đã trả lời Feb 22nd, 2019 9:57 a.m.
+1

bạn tham khảo thử phần Laravel Custom message xem sao https://laravel.com/docs/5.7/validation#customizing-the-error-messages

Chia sẻ
Avatar jquer @jquery123
Feb 22nd, 2019 10:07 a.m.

Mình đang muốn custom cái mã code trả ra cơ bạn, k phải messages. Trong Laravel bất kì 1 validate nào fails đều ra mã 422, giờ t muốn với mỗi validate trả ra 1 mã lỗi cơ mà,.

Avatar Vũ Nguyễn @vunguyen10111995
Feb 22nd, 2019 11:32 a.m.

mình nghĩ cái này là có chuẩn rồi, bạn không nên động vào nó. =))

Avatar Lê Xuân Trường @motcaitenit38
Mar 29th, 2019 7:23 a.m.

@jquery123 có vẻ như bạn đang viết API cho app à 😄 và bên app yêu cầu mỗi message lỗi thì 1 mã khác nhau để show ra bên app thì phải :v

Đã trả lời Feb 22nd, 2019 12:33 p.m.
0

Validator có method failed(), return array dạng:

/*
 * Example array of $failedRules
 * [
 *     "password" => [
 *         "Required" => []
 *     ],
 *     "accept_term" => array:1 [
 *         "Accepted" => []
 *     ],
 *     "invitation_code" => array:1 [
 *         "App\Rules\CustomRule" => []
 *     ]
 * ]
 */
$failedRules = $validator->failed();

Bạn có thể dựa vào cái này để check điều kiện cho từng rule 😄

Bonus bạn có thể xử lý lỗi validation tập trung tại class App\Exceptions\Handler.php mà không phải custom từng FormRequest.

Tham khảo: https://github.com/laravel/framework/blob/5.7/src/Illuminate/Foundation/Exceptions/Handler.php#L231

Chia sẻ
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí