我正在尝试更新数据库中的字段,但我无法
这是我的路线:
Route::get('orders', [
'uses' => 'OrderController@postOrder',
'as' => 'order.show'
]);
控制器:
public function postOrder()
{
$this->orderForm->validate(Input::all());
$order = $this->orders->getNew([
'link' => Input::post('link'),
'size' => Input::post('size'),
'color' => Input::post('color')
]);
$this->orders->save($order);
return Redirect::back()->withMessage('Order has been updated');
}
这是刀片:
{{ Form::open() }}
<div class="box-body">
<div class="row">
<div class="col-lg-6">
<div class="form-group">
{{ Form::label('title', 'Product:') }}
{{ Form::text('title', $order->title, ['class' => 'form-control', ]) }}
</div>
</div>
<div class="col-lg-6">
<div class="form-group">
{{ Form::label('link', 'Link:') }}
{{ Form::text('link', $order->link, ['class' => 'form-control']) }}
</div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
<div class="form-group">
{{ Form::label('size', 'Size:') }}
{{ Form::text('size', $order->size, ['class' => 'form-control']) }}
</div>
</div>
<div class="col-lg-6">
</div>
</div>
<div class="box-footer">
{{ Form::submit('Save', ['class' => 'btn btn-primary']) }}
</div>
{{ Form::close() }}
因此,每当我尝试更新订单时,我收到错误“MethodNotAllowedHttpException”,我尝试了很多方法,但我迷路了。我仍然是php的初学者,这个问题让我发疯,所以如果你能帮助我们,我会很高兴。
感谢
***我已更新代码
答案 0 :(得分:2)
所以你要张贴到路线/orders
。因此,您需要HTTP POST request
。您现在正在为GET
路由分配/orders
个请求。
您需要将代码更改为:
Route::post('orders', [
'uses' => 'OrderController@postOrder',
'as' => 'order.show'
]);
此外,您还需要添加CSRF Token
,这可以通过在您的刀片中添加{!! csrf_field() !!}
来完成(在您的表单中打开和关闭)。
{{ Form::open() }}
{!! csrf_field() !!}
<div class="box-body">
<div class="row">
<div class="col-lg-6">
<div class="form-group">
{{ Form::label('title', 'Product:') }}
{{ Form::text('title', $order->title, ['class' => 'form-control', ]) }}
</div>
</div>
<div class="col-lg-6">
<div class="form-group">
{{ Form::label('link', 'Link:') }}
{{ Form::text('link', $order->link, ['class' => 'form-control']) }}
</div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
<div class="form-group">
{{ Form::label('size', 'Size:') }}
{{ Form::text('size', $order->size, ['class' => 'form-control']) }}
</div>
</div>
<div class="col-lg-6">
</div>
</div>
<div class="box-footer">
{{ Form::submit('Save', ['class' => 'btn btn-primary']) }}
</div>
{{ Form::close() }}
希望这有效!
答案 1 :(得分:0)
您必须在Form :: open方法中指定方法。
{{ Form::open(array('method' => 'post')) }}
答案 2 :(得分:0)
刚刚在存储库中添加了这个:
public function updateOrder($id, array $data)
{
$orders = $this->getById($id);
if (!empty($data['title'])) {
$orders->title = $data['title'];
}
if (!empty($data['link'])) {
$orders->link = $data['link'];
}
(AND SO ON)
$orders->save();
并在控制器中:
public function postOrder($id)
{
$this->orders->updateOrder($id, Input::all());
return Redirect::back()->withMessage('Updated');
}
那就是