2017-03-21 2 views
3

Ich versuche, die Felder in der Datenbank zu aktualisieren, aber ich konnte nichtMethodNotAllowedHttpException

hier ist meine Routen:

Route::get('orders', [ 
    'uses' => '[email protected]', 
    'as' => 'order.show' 
]); 

hier der Controller:

 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'); 
    } 

hier die Klinge:

{{ 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() }} 

jedes Mal, wenn ich versuche, die Bestellung zu aktualisieren, habe ich Fehler "MethodNotAllowedHttpException", ich habe eine Menge Methoden ausprobiert, aber ich bin verloren. Ich bin immer noch Anfänger in PHP und dieses Problem macht mich verrückt, also werde ich mich freuen, wenn Sie Jungs helfen können.

dank

*** Ich habe den Code

aktualisiert

Antwort

0

hinzugefügt Genau dies im Repository:

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

und in der Steuerung:

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

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

und das ist es

0

Sie müssen die Methode im Formular :: open-Methode angeben.

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

@Kovah Ich habe getan, was Sie beraten haben Herr, und jetzt bekomme ich diesen Fehler "validation.required", und ich denke, ich weiß, wie zu lösen, also werde ich es versuchen. Vielen Dank –

2

Sie sind also auf die Route veröffentlichen, /orders . Dazu benötigen Sie eine HTTP POST request. Sie weisen nun der Route /orders eine GET Anfrage zu.

Sie müssen Ihren Code ändern:

Route::post('orders', [ 
    'uses' => '[email protected]', 
    'as' => 'order.show' 
]); 

Auch benötigen Sie einen CSRF Token hinzufügen möchten, können dies durch {!! csrf_field() !!} Zugabe in Ihrer Klinge durchgeführt werden (in Ihrem Formular öffnen und schließen).

{{ 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() }} 

Hoffe, das funktioniert!

Verwandte Themen