Php withX()在Laravel 4.2中不起作用
问题是withErrors()在这段代码中工作得很好,但是withMessage()却不是 我还尝试了('message','testmessage!')。在views文件中,我可以使用$errors变量检索WITHERROR,但如果我想检索withMessage,我必须使用Session::get('message')。为什么$message不起作用 控制器: 模板:Php withX()在Laravel 4.2中不起作用,php,laravel,Php,Laravel,问题是withErrors()在这段代码中工作得很好,但是withMessage()却不是 我还尝试了('message','testmessage!')。在views文件中,我可以使用$errors变量检索WITHERROR,但如果我想检索withMessage,我必须使用Session::get('message')。为什么$message不起作用 控制器: 模板: @extends('default.base') @节(“主节”) @如果(!empty($errors->all()))
@extends('default.base')
@节(“主节”)
@如果(!empty($errors->all()))
@foreach($errors->all()作为$error)
- {{$error}}
@endforeach
@恩迪夫
@如果(isset($message))
{{$message}}
@恩迪夫
@停止
这是因为错误
是一种特殊情况。创建视图时,Laravel检查是否有名为errors
的会话变量。如果是这样,它将把内容作为$errors
传递给视图
light\View\ViewServiceProvider@registerSessionBinder
if ($me->sessionHasErrors($app))
{
$errors = $app['session.store']->get('errors');
$app['view']->share('errors', $errors);
}
这意味着您可以在视图中使用Session::has('message')
和Session::get('message')
,或者添加一个与Laravel处理错误时基本相同的函数:
View::composer('*', function($view){
if(Session::has('message')){
$view->with('message', Session::get('message'));
}
});
你的意思是returnredirect::route('registration')->with('message','testmessage!')代码>?或者可能是Session::flash('message','testmessage!')代码>?是的,我试过用消息('testmessage!')返回重定向::路由('registration')->;并返回Redirect::route('registration')->with('message','testmessage!');显示您的模板(或者至少显示您正在访问的模板的相关部分,$message
我添加了我的模板文件@MarkBakerRedirect::route('registration')->带有('message','testmessage!')
应该可以工作,创建一个名为$message
的变量用于blade中的访问…注意,这是区分大小写的,需要一个很好的答案。据我所知,只有当我在视图中经常使用这个变量时,我才应该使用View Composer,对吗?关于->with(),它是否创建了类似->with x()的会话变量?@Andrius是的,您也必须在->with()案例中使用会话。with x()
只是with('x',…)
的快捷方式,因此它们做的事情完全相同……是的,这就是视图生成器的目的。
if ($me->sessionHasErrors($app))
{
$errors = $app['session.store']->get('errors');
$app['view']->share('errors', $errors);
}
View::composer('*', function($view){
if(Session::has('message')){
$view->with('message', Session::get('message'));
}
});