2013-08-21 14 views

Trả lời

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

này phụ thuộc vào nơi bạn đang bắt ngoại lệ.

Sentry không sử dụng lớp Validator. Vì vậy, nếu bạn muốn trả về một thông báo lỗi cách Laravel, bạn nên tạo một đối tượng Validator riêng biệt và xác nhận hợp lệ đầu tiên, sau đó chỉ chuyển đến Sentry sau khi xác thực của bạn đã trôi qua.

Sentry sẽ chỉ có thể vượt qua 1 lỗi khi nó bắt được một ngoại lệ cụ thể. Hơn nữa, lỗi sẽ không có cùng loại với lỗi trong lớp xác nhận.

Ngoài ra, nếu Sentry bắt được ngoại lệ, khi đó Xác thực của bạn rõ ràng là không hoạt động.

Mã dưới đây không phải là cách bạn nên làm điều đó, nhưng nhiều hơn để hiển thị một sự kết hợp của những gì tôi tin cho thấy cách thức làm việc với Laravel/Sentry

Ví dụ mô hình tài

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

Bạn có lỗi cú pháp, hãy kiểm tra mã của bạn. –

+0

Đã được nhập vào độ tuổi trước và được nhập tự do - không sao chép và dán từ mã đang chạy. Được viết là bằng chứng về khái niệm. – Gravy

+0

Xin lỗi nhưng đây không phải là lý do, nó giống nhau (hoặc tệ hơn) khi không cung cấp mã. Mã sai ngăn cản mọi người * chỉ muốn làm việc gì đó *. Nó không phải là lứa tuổi, đó là 5 tháng trước. –