2017-05-22 12 views
-1

我使用php artisan命令創建了一個新請求。當我發送表單以通過ajax中的laravel內置請求進行驗證時,它將正確返回驗證的響應,但是當我發送它並希望使用之前由php artisan創建的新請求驗證它時,它將返回所有輸入無效,但如果我在控制器中的數組中設置規則並在那裏使用它,則它可以正常工作。使用php工匠創建的新請求始終返回laravel中ajax的無效響應

public function postIndex(Request $request) 
{ 
    $data = $request->get('form'); 
    parse_str($data, $data); 
    // it works and return validation correctly 
    $rules = [some rules here]; 
    $validity = Validator::make($data, $rules); 
} 

public function postIndex(newRequest $request) 
{ 
    $data = $request->get('form'); 
    parse_str($data, $data); 
    // but this one returns all validations messages even if they are or not valid!!! 
    $validity = Validator::make($data); 
} 

我該如何解決這個問題?

感謝

+1

分享您的控制器方法代碼中的錯誤與表單代碼一起。 – Sandeesh

+0

'$ data'在您的代碼中未定義。如果您使用帶驗證規則的FormRequest,則不應在控制器中進行驗證。 – ceejayoz

+0

正如你所看到的,我沒有完全編寫代碼,但只有那些需要的代碼。 $ data是從html表單獲得的數據。 – simpleCoder

回答

1

首先,$data是不是在你的代碼中定義的,你不需要調用Validator當您使用的是自定義創建的請求驗證,所以你的方法只是需要

public function postIndex(newRequest $request) 
{ 
    //Do whatever here 
} 

而且正好趕上你的Ajax回調

error: function(data){ 
    var errors = data.responseJSON; 
    console.log(errors); 
    } 
+0

正如你所看到的,我沒有完全寫代碼,但只有那些需要的代碼。 $ data是從html表單獲得的數據。 – simpleCoder

+0

好吧,即使你沒有在你的例子中放置'$ data'變量的源碼,這行:'$ validity = Validator :: make($ data);'是沒有必要的。 –

+0

已修改。現在有什麼問題? – simpleCoder

相關問題