2017-04-21 178 views
0

把()当我试图通过验证返回错误象下面这样:调用未定义的方法照亮的 Support MessageBag ::在Laravel 5.3

return Redirect::back()->withErrors($validator)->withInput();

它给我这个错误:

Call to undefined method Illuminate\Support\MessageBag::put()

其是: vendor\laravel\framework\src\Illuminate\Http\RedirectResponse.php line 133

的代码是:

/** 
* Flash a container of errors to the session. 
* 
* @param \Illuminate\Contracts\Support\MessageProvider|array|string $provider 
* @param string $key 
* @return $this 
*/ 
public function withErrors($provider, $key = 'default') 
{ 
    $value = $this->parseErrors($provider); 

    $this->session->flash(
     'errors', $this->session->get('errors', new ViewErrorBag)->put($key, $value) 
    ); 

    return $this; 
} 

当你看到它应该使用put方法从ViewErrorBag不MessageBag!

任何帮助,将不胜感激...

回答

0

get('errors', new ViewErrorBag)将返回一个ViewErrorBagerrors关键并不在会话中。在这种情况下,会话中确实存在errors,它似乎是MessageBag的实例。所以,get('errors', new ViewErrorBag)返回MessageBag,然后尝试打电话给put(),这给你你的错误。

您需要在代码中找到您在errors会话密钥中存储MessageBag的位置,并更改该密钥。

0

我觉得像你应该更新你的代码:

return redirect()->back() 
      ->withInput() 
      ->withErrors($validator); 

OR 你需要更新你的作曲家:

composer dumpauto 
相关问题