我使用laravel框架make方法和函数来更新数据库中的行,但是发现错误 MethodNotAllowedHttpException 并且我尝试处理它,但仍然可以&#t; t 这里的格式为 edit.blade.php :
{{ Form::model($datas, array('route' => array('barang.update' , $datas->id) , 'method'=> 'PATCH') )}}
<div class="box-body">
<div class="form-group">
{{ Form::label('Nama Barang', 'Nama Barang :') }}
{{ Form::text('nama_barang',null,['class'=>'form-control']) }}
</div>
<div class="form-group">
{{ Form::label('Harga Barang', 'Harga Barang :') }}
<div class="input-group">
<span class="input-group-addon">Rp</span>
{{ Form::text('harga_barang',null,['class'=>'form-control']) }}
<span class="input-group-addon">.00</span>
</div>
</div>
<div class="form-group">
{{ Form::label('Jumlah Barang', 'Jumlah Barang :') }}
<div class="input-group">
{{ Form::text('jumlah',null,['class'=>'form-control']) }}
<span class="input-group-addon">Item</span>
</div>
</div>
<div class="form-group">
<label for="exampleInputFile">Foto Barang</label>
<input type="file" id="exampleInputFile">
<!-- <p class="help-block">Example block-level help text here.</p> -->
</div>
</div>
<!-- /.box-body -->
<div class="box-footer">
{{ Form::submit('Simpan', ['class' => 'btn btn-primary']) }}
<button type="submit" class="btn btn-success">Simpan dan Publikasi</button>
<button type="submit" class="btn btn-default">Batal</button>
</div>
{{ Form::close() }}
这里是Controller BarangContr.php :
public function edit($id)
{
$datas = BarangModel::find($id);
return View::make('admin/barang/edit', compact('datas'));
}
public function update($id)
{
$datas = new BarangModel;
$datas -> nama_barang = Input::get('nama_barang');
$datas -> harga_barang = Input::get('harga_barang');
$datas -> jumlah = Input::get('jumlah');
$barang = BarangModel::find($id);
$barang->update($datas);
return $this->index();
}
此处的路线代码 route.php :
Route::resource('barang', 'BarangContr');
Route::get('/barang/edit/{id}', 'BarangContr@edit');
Route::post('/barang/update/{id}', array('as' => 'barang.update' , 'uses' => 'BarangContr@update'));
这里是BarangModel.php代码:
<?php
use Illuminate\Database\Eloquent\Model;
class BarangModel extends Model
{
protected $table = 'tb_barang';
protected $primarykey = 'id';
protected $fillable = ['kode_barang', 'nama_barang', 'harga_barang', 'jumlah'];
}
先谢谢你的答案:)
答案 0 :(得分:0)
您的路线适用于方法method="PATCH"
时,您已将POST
放入表单中。 HTML5表单只接受GET
或POST
方法。请删除method属性再次尝试(因此返回POST
默认值。)
顺便说一下,Laravel可以使用隐藏输入来使用其他路线方法:https://laravel.com/docs/5.3/routing#form-method-spoofing
答案 1 :(得分:0)
由于您正在使用补丁,我建议将您的路线更改为以下
Route::post('/barang/update/{id}', array('as' => 'barang.update' , 'uses' => 'BarangContr@update'));
到
Route::patch('/barang/update/{id}', array('as' => 'barang.update' , 'uses' => 'BarangContr@update'));
此外,您应该将控制器更改为以下内容:
$datas = BarangModel::find($id);
$datas->nama_barang = Input::get('nama_barang');
$datas->harga_barang = Input::get('harga_barang');
$datas->jumlah = Input::get('jumlah');
$datas->save();
return $this->index();