2013-08-21 13 views

risposta

24
return Redirect::to('admin/users/create') 
     ->withInput() 
     ->withErrors(array('message' => 'Login field is required.')); 
2

Questo dipende da dove si stanno recuperando l'eccezione.

Sentry non utilizza la classe Validator. Pertanto, se si desidera restituire un messaggio di errore in modo laravale, è necessario creare un oggetto Validator separato e convalidare prima, quindi passare a Sentry solo dopo che è stata superata la convalida.

Sentry sarà in grado di passare 1 errore indietro poiché sta rilevando un'eccezione specifica. Inoltre, l'errore non sarà dello stesso tipo dell'errore nella classe di validazione.

Inoltre, se Sentry rileva l'eccezione, la convalida chiaramente non funziona.

codice qui sotto non è come si dovrebbe fare, ma più a mostrare una combinazione di ciò che credo mostra modi di lavorare con laravel/Sentry

Esempio modello User

class User extends Eloquent { 
    public $errors; 
    public $message; 

    public function registerUser($input) { 

     $validator = new Validator::make($input, $rules); 
     if $validtor->fails() { 
      $this->errors = $validator->messages(); 
      return false; 
     } 

     try { 
      // Register user with sentry 
      return true; 
     } 
     catch (Cartalyst\Sentry\Users\LoginRequiredException $e) 
     { 
      $this->message = "failed validation"; 

      return false; 
     } 
     } 
    } 
} 

UserController

class UserController extends BaseController { 

public function __construct (User $user) { $this->user = $user; } 

public function postRegister() 
{ 
    $input = [ 
     'email' => Input::get('email'), 
     'password' => Input::get('password'), 
     'password_confirmation' => Input::get('password_confirmation') 
    ]; 

    if ($this->user->registerUser($input)) { 
     Session::flash('success', 'You have successfully registered. Please check email for activation code.'); 
     return Redirect::to('/'); 
    } 
    else { 
     Session::flash('error', $this->user->message); 
     return Redirect::to('login/register')->withErrors($this->user->errors)->withInput(); 
    } 
} 
+0

Hai un errore di sintassi, controlla il codice. –

+0

È stato digitato molto tempo fa ed è stato digitato a mano libera - non è stato copiato e incollato dal codice in esecuzione. È stato scritto come prova del concetto. – Gravy

+0

Ci scusiamo ma questa non è una scusa, è lo stesso (o peggio) che non fornisce codice. Il codice errato scoraggia le persone * che vogliono solo qualcosa che funzioni *. Non sono secoli, sono 5 mesi fa. –

Problemi correlati