2016-03-27 9 views
5

In laravel 5.1 Progettolaravel validazione dei form ajax con campo di input

sto ottenendo questo Response Ajax Come Errore

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

ho bisogno di una convalida di errore come questa immagine enter image description here posso farlo da validatore laravel di questo codice (return From Controller),

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

Mostra in blade.php di questo codice

<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> 

Come posso rendere validazione ajax + laravel proprio così ??

+0

Che cosa stai cercando di fare esattamente? Quello che hai sopra sembra normale, no? Stai cercando di restituire un messaggio specifico dall'errore? – camelCase

+0

sì. ho bisogno di un messaggio specifico dall'errore. –

+2

Qualunque cosa tu stia usando per eseguire ajax submit (jQuery?), Deve anche essere programmato in modo tale da elaborare i dati di errore e quindi aggiungere il messaggio di errore al tuo codice HTML. Non c'è magia in Laravel che lo farà per te. –

risposta

1

Il passaggio di un terzo parametro a validate consente di specificare un messaggio personalizzato, come visto here. È possibile utilizzare la notazione "punto" per specificare il messaggio di errore in un campo specifico.

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

come posso mostrare l'errore della console nel mio HTML? –

+0

Laravel restituirà una risposta 'JSON' contenente tutti gli errori di convalida in caso di mancata convalida delle richieste AJAX. Restituisce questa risposta con stato '422' in modo da poter accedere agli errori lì. [Questa risposta] (http://stackoverflow.com/questions/11092007/check-what-error-val-is-in-ajax-callback) dovrebbe essere d'aiuto. – camelCase

0

Supponendo che stai utilizzando correttamente l'oggetto di richiesta Laravel riceverai un codice di risposta 422 nel tuo browser.

Se si desidera catturare tutto ciò a livello globale, è possibile estendere il comportamento ajax predefinito, inserendo il seguente codice nel proprio JS.

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

Siete alla ricerca di https://github.com/whipsterCZ/laravel-ajax

Non esattamente quello che vuoi e molto altro!

invio e forme Convalida tramite la tecnologia AJAX è semplice come questo - nessuna configurazione necessaria

HTML

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

controller

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')); 
} 

E forma validate (per consuetudine FormRequest) e mostra gli errori (in errorBag o direttamente sopra gli ingressi)