通过ajax检索Laravel 4.2 messagebag

时间:2015-01-25 12:27:39

标签: php laravel

我希望能够检索laravel messagebag内容,例如验证错误或我在表单页面放置的其他消息但是通过ajax。

我目前使用View将错误返回到withErrors,并对此方法感到满意。我现在想要使用jquery在页面上显示弹出窗口和其他警报。

我已经创建了一个针对php脚本的ajax调用,该脚本尝试检索错误消息,但我无法使用这个简单的工作。

所以:

假设我已设置如下消息:

$message = new Illuminate\Support\MessageBag;
        $message->add( 'error', "Reservation Not Found. Error has been reported" );

然后我想用以下内容检索该消息:

Route::get('fetcherrors', function() {

    $errors = Session::get('errors');

    return Response::json($errors);

});

目前这不起作用并返回一个空对象。

  1. 如何从php脚本中检索当前messagebag的内容?
  2. 这个messagebag什么时候到期?什么触发它到期?
  3. 混淆。

1 个答案:

答案 0 :(得分:1)

MessageBag只是​​一个奇特的键/值存储。要从那里检索消息,您可以使用$messageBag->get('error')

要在其他地方使用此MessageBag,您需要将其保存在例如Session中。 但是,简单地存储错误数组并忘记MessageBags可能更容易。如果您只需要验证某些用户输入并保存错误消息以便以后检索它们,这就是我建议的方法。示例代码:

// Validation result
$errors = ['An error', 'Another error'];
Session::put('errors', $errors);

// Get error messages
$errors = Session::get('errors');
return Response::Json($errors);

如果你有更多的消息,你试图保存并且你坚持使用MessageBags并希望以优雅的方式做到这一点,这里有一篇解释它的文章:http://toddish.co.uk/blog/global-site-messages-in-laravel-4/