问题是 withErrors()在此代码中完美运行,但 withMessage()则不然。
我也试过('消息','测试消息!')。在视图文件中,我可以使用$ errors变量检索withErrors,但是如果我想检索withMessage,我必须使用Session :: get('message')。为什么$ message不起作用?
控制器:
public function registration() {
$rules = array(...);
$validator = Validator::make(Input::all(), $rules);
if($validator->fails()) {
return Redirect::route('registration')->withErrors($validator);
}
else {
//Some code here...
return Redirect::route('registration')->withMessage('Test message!');
}
}
模板:
@extends('default.base')
@section('main')
@if(!empty($errors->all()))
<div class="alert alert-danger" role="alert">
<ul>
@foreach($errors->all() as $error)
<li>{{ $error }}
@endforeach
</ul>
</div>
@endif
@if(isset($message))
{{ $message }}
@endif
@stop
答案 0 :(得分:2)
这是因为errors
是一个特例。创建视图时,Laravel会检查是否存在名为errors
的会话变量。如果是,则会将内容$errors
传递给视图。
Illuminate\View\ViewServiceProvider@registerSessionBinder
if ($me->sessionHasErrors($app))
{
$errors = $app['session.store']->get('errors');
$app['view']->share('errors', $errors);
}
这意味着您要么在视图中使用Session::has('message')
和Session::get('message')
,要么添加View Composer,其基本与Laravel对errors
的处理方式相同:
View::composer('*', function($view){
if(Session::has('message')){
$view->with('message', Session::get('message'));
}
});