如何在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的登录的答案。重定向到仅用于显示相同视图的另一种方法认为是不必要的。
干杯
答案 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>')!!}