当我尝试通过以下验证返回错误时:
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;
}
如您所见,它应该使用ViewErrorBag中的put方法而不是MessageBag!
任何帮助都将不胜感激......
答案 0 :(得分:0)
get('errors', new ViewErrorBag)
密钥在会话中不存在时, ViewErrorBag
将返回errors
。在这种情况下,会话中确实存在errors
,它似乎是MessageBag
的实例。因此,get('errors', new ViewErrorBag)
会返回MessageBag
,然后尝试在其上调用put()
,这会给您出错。
您需要在代码中找到您在会话MessageBag
密钥中存储errors
的内容,然后进行更改。
答案 1 :(得分:0)
我认为你应该更新你的代码:
def start(self, table):
list_a = ["a is first letter", "b is second letter","c is third letter"]
list_b = ["e4", "f5", "g6"]
for i in range(len(list_a)):
item1 = QtGui.QTableWidgetItem()
item1.setText(list_a[i])
table.setItem(i, 0, item1)
button1 = QtGui.QPushButton()
button1.setText("add")
button1.clicked.connect(self.add)
item2 = QtGui.QTableWidgetItem()
item2.setText(list_b[i])
table.setItem(i, 1, item2)
table.setCellWidget(i, 2, button1)
OR 您需要更新作曲家:
return redirect()->back()
->withInput()
->withErrors($validator);