如何在Laravel中没有重定向的情况下将验证错误传递给视图

时间:2013-12-19 23:50:37

标签: validation view laravel

如何在Laravel中没有重定向的情况下直接将验证错误传递给View? 我不想这样做:

return Redirect::back()->withErrors($validator)->withInput();

而是:

Input::flash(); // for repopulating fields
Validator::flash(); // this doesn't exist    
return View::make('fragments/login_ajax');

或者更简洁直接生成没有重定向的视图。最佳将是这样的,但这不起作用:

return View::make('fragments/login_ajax')->withErrors($validator)->withInput();

原因是,这是基于ajax的登录的答案。重定向到仅用于显示相同视图的另一种方法认为是不必要的。

干杯

3 个答案:

答案 0 :(得分:0)

真实答案: 这不是一个值得花时间的问题。这是一个架构问题。

可能解决您的情况(不推荐): 使auth成为新路由并让它返回错误/消息的json。然后让JS处理错误/消息/逻辑。

答案 1 :(得分:0)

虽然同意这样做是个坏主意,但您可以使用View::share()将错误分享到所有视图。

\View::share('errors', $errors);

答案 2 :(得分:0)

使用以下解决方案。

控制器:

$validator = Validator::make($request->all(), 
                             [
                                'class_id' => 'required|numeric|not_in:0',
                                'batch_id' => 'required|numeric|not_in:0',
                                'student_id' => 'required|numeric|not_in:0'
                             ]);
$this->viewData['errors'] = $validator->errors();

查看文件:

{!! Form::label('class_id','Student Class') !!}
{!! Form::select('class_id', array(), 0, ['class' => 'form-control', 'id' => 
'class_id']) !!}{!! $errors->first('class_id', '<p class="help-block">:message</p>')!!}