4

在我的控制器中,我有一个登录用户的功能。

如果登录成功,我可以简单地使用return Redirect::back().

当凭据不正确并且我想使用 Flash 消息重定向时,我的问题就开始了。

我知道我可以将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);
}

这样...当您进入登录页面时,无论提交如何,它都会检查错误,如果发现任何错误,它会显示您的消息。

编辑部分 用于处理 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 回答