2013-08-21 6 views
9

は、私がこのException MessageLaravel4でwithErrorsを例外エラーメッセージとともに使用するにはどうすればよいですか?

catch (Cartalyst\Sentry\Users\LoginRequiredException $e) 
{ 
    echo 'Login field is required.'; 
} 

がどのように私はこのメッセージログインフィールドを渡すことができ が必要ですwithErrors()を使用して持っていると仮定しますか?

return Redirect::to('admin/users/create')->withInput()->withErrors(); 

答えて

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

これは、例外をキャッチしている場所によって異なります。

SentryはValidatorクラスを使用しません。したがって、エラーメッセージLaravelの方法を返す場合は、個別のValidatorオブジェクトを作成して最初に検証し、検証がパスした後でSentryに渡すだけです。

Sentryは、特定の例外を捕捉している場合に限り、1つのエラーを戻すことができます。さらに、エラーは検証クラスのエラーと同じタイプではありません。

また、Sentryが例外をキャッチしても、検証は明らかに機能していません。以下

コードは、あなたがそれを行う必要がありますが、より多くの私は

例の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で

にLaravel /歩哨での作業の方法を示して信じるものの組み合わせを表示する方法ではありません
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

構文エラーがあります。コードを確認してください。 –

+0

年齢は前に入力され、フリーハンドで入力されました。実行中のコードからコピーアンドペーストされませんでした。概念の証明として書かれました。 – Gravy

+0

申し訳ありませんが、これは言い訳ではなく、コードを指定しない場合と同じ(または悪い)です。間違ったコードは、働くことを望んでいる人*を阻止します。それは年齢ではなく、5ヶ月前です。 –

関連する問題