4

私のコントローラーには、ユーザーをログインする機能があります。

ログインが成功した場合は、単に使用できますreturn Redirect::back()

私の問題は、資格情報が正しくなく、フラッシュメッセージでリダイレクトしたいときに始まります。

withメソッドをリダイレクトにチェーンできることはわかっていますが、それはデータを特定のビューに送信し、ログイン HTML があるレイアウトには送信しません。

次のようにビューをロードできます。

$this->layout
     ->with('flash',$message)
     ->content = View::make('index');

しかし、参照ページにリダイレクトする必要があります。

データをレイアウトに渡しながらリダイレクトすることは可能ですか?

4

1 に答える 1

7

Laravel Validator クラスはこれを非常にうまく処理します....私が通常行う方法は、ブレードのレイアウト/ビュー内に条件を追加することです...

{{ $errors->has('email') ? 'Invalid Email Address' : 'Condition is false. Can be left blank' }}

何かがエラーで返された場合、これはメッセージを表示します..次に、検証プロセスで...

 $rules = array(check credentials and login here...);

$validation = Validator::make(Input::all(), $rules);

if ($validation->fails())
{
    return Redirect::to('login')->with_errors($validation);
}

このように...ログインページに移動すると、送信に関係なくエラーがチェックされ、エラーが見つかった場合はメッセージが表示されます。

EDITED SECTION Authクラスを扱うため..これはあなたの見解に入ります...

@if (Session::has('login_errors'))
    <span class="error">Username or password incorrect.</span>
@endif

次に、認証で...これらの行に沿った何か..

 $userdata = array(
    'username'      => Input::get('username'),
    'password'      => Input::get('password')
);
if ( Auth::attempt($userdata) )
{
    // we are now logged in, go to home
    return Redirect::to('home');
}
else
{
    // auth failure! lets go back to the login
    return Redirect::to('login')
        ->with('login_errors', true);

}
于 2013-04-04T15:59:57.197 に答える