Laravel控制器@更新函数
Laravel Controller@update function
所以,我正在尝试将我的新统计信息发送到我的 CharactersController 中的更新函数,但它显示此错误:'MethodNotAllowedHttpException'。我尝试了欺骗方法,但没有用。
这是我要编辑角色的索引($tet 是我正在观看的角色的行函数):
{!! Form::open(['action' => ['CharactersController@update', $tet->id], 'method' => 'POST','id'=>'form1', 'enctype' => 'multipart/form-data']) !!}
<tr>
<td>HP:</td>
<td>{{$tet->hp}}</td>
<td><button class="btn btn-primary" onclick="addValue(1)">+</button></td>
<td><p>-></p></td>
<td><input id="jedna" class="edit" name="hodnota" type="number" disabled="true" value={{$tet->hp}}></td>
</tr>
<tr>
<td>ATTACK:</td>
<td>{{$tet->attack}}</td>
<td><button class="btn btn-primary" onclick="addValue(2)">+</button></td>
<td><p>-></p></td>
<td><input id="dva" class="edit" name="hodnota" type="number" disabled="true" value={{$tet->attack}}></td>
</tr>
<tr>
<td>LUCK:</td>
<td>{{$tet->luck}}</td>
<td><button class="btn btn-primary" onclick="addValue(3)">+</button></td>
<td><p>-></p></td>
<td><input id="tri" class="edit" name="hodnota" type="number" disabled="true" value={{$tet->luck}}></td>
</tr>
<tr>
<td>AGILITY:</td>
<td>{{$tet->agility}}</td>
<td><button class="btn btn-primary" onclick="addValue(4)">+</button></td>
<td><p>-></p></td>
<td><input id="ctyri" class="edit" name="hodnota" type="number" disabled="true" value={{$tet->agility}}></td>
</tr>
<button onclick="uloz()">SAVE ALL</button>
{{Form::hidden('_method','PUT')}}
{{Form::close()}}
在'uloz()'函数中,我启用所有数字输入并提交表单。
这是我的 CharactersController:
public function update(Request $request, $id)
{
$character = Character::find($id);
$character->hp=$request->input('jedna');
$character->attack=$request->input('dva');
$character->luck=$request->input('tri');
$character->agility=$request->input('ctyri');
$character->save();
return redirect('/character');
}
你应该试试这个:
你这样查看文件:
{!! Form::model($tet, ['route' => ['characters.update', $tet->id], 'class' => 'form-horizontal', 'role' => 'form', 'method' => 'post']) !!}
你的路线是这样的:
Route::post('characters/update/{id}', 'CharactersController@update')->name('characters.update');
更新答案
请在您的表单中添加 CSRF
令牌,例如:
<meta name="csrf-token" content="{{ csrf_token() }}">
在ajax中添加csrf令牌:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
好的,我知道了,注意你的 HTML 结构,我的表格在 <table>
里面,但它必须在外面。仅此而已,不需要 CSRF 令牌。
所以,我正在尝试将我的新统计信息发送到我的 CharactersController 中的更新函数,但它显示此错误:'MethodNotAllowedHttpException'。我尝试了欺骗方法,但没有用。
这是我要编辑角色的索引($tet 是我正在观看的角色的行函数):
{!! Form::open(['action' => ['CharactersController@update', $tet->id], 'method' => 'POST','id'=>'form1', 'enctype' => 'multipart/form-data']) !!}
<tr>
<td>HP:</td>
<td>{{$tet->hp}}</td>
<td><button class="btn btn-primary" onclick="addValue(1)">+</button></td>
<td><p>-></p></td>
<td><input id="jedna" class="edit" name="hodnota" type="number" disabled="true" value={{$tet->hp}}></td>
</tr>
<tr>
<td>ATTACK:</td>
<td>{{$tet->attack}}</td>
<td><button class="btn btn-primary" onclick="addValue(2)">+</button></td>
<td><p>-></p></td>
<td><input id="dva" class="edit" name="hodnota" type="number" disabled="true" value={{$tet->attack}}></td>
</tr>
<tr>
<td>LUCK:</td>
<td>{{$tet->luck}}</td>
<td><button class="btn btn-primary" onclick="addValue(3)">+</button></td>
<td><p>-></p></td>
<td><input id="tri" class="edit" name="hodnota" type="number" disabled="true" value={{$tet->luck}}></td>
</tr>
<tr>
<td>AGILITY:</td>
<td>{{$tet->agility}}</td>
<td><button class="btn btn-primary" onclick="addValue(4)">+</button></td>
<td><p>-></p></td>
<td><input id="ctyri" class="edit" name="hodnota" type="number" disabled="true" value={{$tet->agility}}></td>
</tr>
<button onclick="uloz()">SAVE ALL</button>
{{Form::hidden('_method','PUT')}}
{{Form::close()}}
在'uloz()'函数中,我启用所有数字输入并提交表单。 这是我的 CharactersController:
public function update(Request $request, $id)
{
$character = Character::find($id);
$character->hp=$request->input('jedna');
$character->attack=$request->input('dva');
$character->luck=$request->input('tri');
$character->agility=$request->input('ctyri');
$character->save();
return redirect('/character');
}
你应该试试这个:
你这样查看文件:
{!! Form::model($tet, ['route' => ['characters.update', $tet->id], 'class' => 'form-horizontal', 'role' => 'form', 'method' => 'post']) !!}
你的路线是这样的:
Route::post('characters/update/{id}', 'CharactersController@update')->name('characters.update');
更新答案
请在您的表单中添加 CSRF
令牌,例如:
<meta name="csrf-token" content="{{ csrf_token() }}">
在ajax中添加csrf令牌:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
好的,我知道了,注意你的 HTML 结构,我的表格在 <table>
里面,但它必须在外面。仅此而已,不需要 CSRF 令牌。