Php withX()在Laravel 4.2中不起作用

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()))

问题是withErrors()在这段代码中工作得很好,但是withMessage()却不是

我还尝试了('message','testmessage!')。在views文件中,我可以使用$errors变量检索WITHERROR,但如果我想检索withMessage,我必须使用Session::get('message')。为什么$message不起作用

控制器:

模板:

@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
我添加了我的模板文件@MarkBaker
Redirect::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'));
    }
});