2016-03-27 77 views
5

在Laravel 5.1項目與輸入字段Laravel AJAX表單驗證

我得到這個Ajax響應作爲錯誤

{ 
     "success":false, 
     "errors":{ 
     "drugs_power":["The drugs power field is required."] 
     } 
} 

我需要這樣的形象一個錯誤的驗證 enter image description here 我可以使它laravel validator by this code(return From Controller),

$this->validate($request, [ 
      'drugs_name' => 'required|unique:drugs', 
      'drugs_group_name' => 'required', 
      'drugs_power' => 'required' 
     ]); 

顯示在此代碼的blade.php中

<div class="form-group{{ $errors->has('drugs_power') ? ' has-error' : '' }}"> 
    <label for="userName">Power</label> 
     <div> 
      <input type="text" class="form-control" name="drugs_power" 
               value="{{old('drugs_power')}}"> 
     @if ($errors->has('drugs_power')) 
      <span class="help-block"> 
     <strong>{{ $errors->first('drugs_power') }}</strong> 
       </span> 
      @endif 
    </div> 


</div> 

如何使ajax + laravel驗證就像這樣?

+0

你想要做的是什麼?你上面的東西看起來很正常,不是嗎?你是否試圖從錯誤中返回特定的消息? – camelCase

+0

是的。我需要來自錯誤的特定消息。 –

+2

無論您使用什麼來執行ajax提交(jQuery?),它也必須以這種方式進行編程,以處理錯誤數據,然後將錯誤消息附加到HTML中。 Laravel沒有魔術可以爲你做。 –

回答

1

將第三個參數傳遞到validate可讓您指定自定義消息,如here所示。您可以使用「點」符號將錯誤消息指定給特定字段。

$this->validate($request, [ 
    'drugs_name' => 'required|unique:drugs', 
    'drugs_group_name' => 'required', 
    'drugs_power' => 'required' 
], [ 
    'drugs_power.required' => 'Your custom message here.' 
]); 
+0

我該如何向我的HTML顯示控制檯錯誤? –

+0

Laravel將返回一個包含所有驗證錯誤的JSON響應,失敗時將通過AJAX請求進行驗證。它返回狀態爲「422」的響應,以便您可以訪問那裏的錯誤。 [這個答案](http://stackoverflow.com/questions/11092007/check-what-error-value-is-in-ajax-callback)應該也會對你有所幫助。 – camelCase

0

假設您正確使用Laravel請求對象,您將在瀏覽器中接收響應代碼422。

如果你喜歡全局捕捉這個,你可以通過在你的JS中放置下面的代碼來擴展默認的ajax行爲, 。

$(function() { 
    $.ajaxSetup({ 
     statusCode: { 
      422: function (data) { 
        $.each(data.responseJSON, function (k, v) { 
         // do something with the error 
        }) 
      } 
     } 
    }); 
}); 
0

您正在尋找https://github.com/whipsterCZ/laravel-ajax

它不正是你想要和更!通過AJAX

發送和驗證形式是簡單這樣的 - 不需要任何配置

HTML

<form action="" class="ajax">...</form> 

控制器

public function update(ClientRequest $request, Client $client) 
{ 
    $client->update($request->all()); 
    $request->session()->flash('success', 'Client has been updated.'); 

    return \Ajax::redirect(route('clients.index')); 
} 

驗證形式(通過自定義FormRequest)並顯示錯誤(在錯誤包或直接在輸入之上)