我是laravel在一个小项目中工作的新手。我有更新我的桌子的问题。
我的编辑字段是
{{ Form::model($participantedit, array('method' => 'PATCH', 'route' => array('dota.update', $participantedit->idparticipant))) }}
<table border="0">
<input type="text" name="participant_name" value="<?php echo $participantedit['participant_name']; ?>" />
<li>{{ Form::submit('Update', array('class' => 'btn btn-info')) }}</li>
{{Form::close()}}
我的更新功能是
public function update($id){
$input = Input::all();
return Participant::where('idparticipant', '=', $id)->update($input);
}
我收到列_method
未知的错误。
答案 0 :(得分:4)
问题在于Laravel会自动在表单中添加_method
字段。这样做是因为HTML表单不支持PATCH
等方法。因此它会发送值为_method
的字段patch
,以支持除POST和GET之外的其他动词。
您可以使用Input::except()
。它将返回所有输入,但在删除指定的输入之前:
$input = Input::except('_method');
您可能还需要排除CSRF令牌:
$input = Input::except('_method', '_token');
或者你可以使用相反的Input::only()
:
$input = Input::only('foo', 'bar'); // foo and bar are values you actually want
答案 1 :(得分:0)
使用PUT代替PATCH。然后尝试将其放入更新功能
echo "<pre>";
print_r($input);
echo "</pre>";
exit;
看,如果你得到了价值观。如果您正在获取,则将更新结果存储到如下变量中:
$ response = Participant :: where('idparticipant','=',$ id) - &gt; update($ input);
然后再次打印:(查找是否有任何验证错误)
echo "<pre>";
print_r($response->errors());
echo "</pre>";
exit;