2017-10-09 103 views
0

是否有任何方法在laravel中引发手动表单验证错误?假设有一个函数可以检查信用卡号码,如果失败,我想设置一个错误并将用户重定向回表单。我正在寻找类似的东西。Laravel 5.x.从表单验证中抛出手动错误

private function validateCreditCard() {...} 
if (!validateCreditCard()) { 
    # Throw a form validation error here. 
} 

回答

0

在Laravel中实际上有许多验证方法。

  1. 来自控制器

Validator::make($request->all(), [ 
 
     'ccv' => 'required|numeric|max:3', 
 
     'card_number' => 'required', 
 
    'expiry_date' => 'required', 
 
])->validate();

  • 指定要在代码中显式地重定向请求
  • $validator = Validator::make($request->all(), [ 
     
          'ccv' => 'required|numeric', 
     
          'card_number' => 'required', 
     
          'expiry_date' => 'required', 
     
    
     
          
     
         ]); 
     
    
     
         if ($validator->fails()) { 
     
          return redirect('pay/with/creditcard') 
     
             ->withErrors($validator) 
     
             ->withInput(); 
     
         }

  • 做的第一验证例如接连验证(检查卡debitable)
  • $validator = Validator::make(
     
           'ccv' => 'required|numeric', 
     
           'card_number' => 'required', 
     
           'expiry_date' => 'required',); //your normal validation here. e.g ccv, required fields etc. 
     
        
     
        $validator->after(function ($validator) { 
     
         if (!$this->validateCreditCard()) { //do another validation e.g check if card is debitable 
     
         
     
          $validator->errors()->add('credit_card', 'Something is wrong with this credit card!'); 
     
         } 
     
        });

    ,你可以重新导向付款表单。假设你的路线是'pay/with/creditcard'

    if ($validator->fails()) { 
          return redirect('pay/with/creditcard') 
             ->withErrors($validator) 
             ->withInput(); 
         } 
    
    +0

    我可以在控制器本身内部运行它吗? –

    +0

    是的,你可以在控制器中运行它 –

    +0

    谢谢。这真的很有帮助。 –