2017-03-21 113 views
3

我試圖更新數據庫中的字段,但我不能MethodNotAllowedHttpException

這裏是我的路線:

Route::get('orders', [ 
    'uses' => '[email protected]', 
    '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

在倉庫中就添加了這個

public function postOrder($id) 
{ 
    $this->orders->updateOrder($id, Input::all()); 

    return Redirect::back()->withMessage('Updated'); 
} 

,這就是它

0

您必須指定在表:: open方法的方法。

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(); 

,並在控制器:

{{ Form::open(array('method' => 'post')) }} 
+0

@Kovah我已經完成了你建議的先生,現在我得到了這個錯誤「validation.required」,我想我知道如何解決,所以我會試一試。謝謝 –

2

所以你發佈的路線,/orders 。因此你需要一個HTTP POST request。您現在正在爲/orders路線分配GET請求。

您需要更改您的代碼:

Route::post('orders', [ 
    'uses' => '[email protected]', 
    '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() }} 

希望這個作品!

相關問題