withX() 在 Laravel 4.2 中不起作用
withX() does not work in Laravel 4.2
问题是 withErrors() 在此代码中运行良好,但 withMessage() 却不是。
我也试过('message','Test message!')。在视图文件中,我可以使用 $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
那是因为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 对 [=12= 的作用基本相同]:
View::composer('*', function($view){
if(Session::has('message')){
$view->with('message', Session::get('message'));
}
});
问题是 withErrors() 在此代码中运行良好,但 withMessage() 却不是。
我也试过('message','Test message!')。在视图文件中,我可以使用 $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
那是因为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 对 [=12= 的作用基本相同]:
View::composer('*', function($view){
if(Session::has('message')){
$view->with('message', Session::get('message'));
}
});