2017-02-23 3 views
0

Das ist mein WegLaravel 5 Löschmethode. immer MethodNotAllowedHttpException in RouteCollection.php Linie 233:

Route::delete('/customer_page/summary/{id}', '[email protected]_cart'); 

Meine Reglerfunktion

public function delete_cart($id) 
    { 


     cart::findOrFail($id)->delete(); 

     return redirect('/customer_page/summary'); 
    } 

Meine Form

@foreach($cart as $key => $val) 
          <tr> 
          <td>{{ $val->room_type }}</td> 
          <td>{{ $val->number_of_rooms }}</td> 
          <td>{{ $val->price }}</td> 
          <td> 
           <form action="/customer_page/summary/{{ $val->id }}" method="post"> 
           {{ csrf_field() }} 
           <input type="hidden" name="_method" value="DELETE" /> 
           <button type="submit" class="btn waves-effect red"><i class="material-icons">delete</i>delete</button> 
           </form> 
          </td> 
          </tr> 
         @endforeach 

Ich weiß nicht, warum ich immer halten dass Fehler immer

+0

sein entweder Sie die Start '/' aus dem ‚action‘ –

Antwort

1

Sie benötigen method="POST" auf dem Formular zu setzen, dann in der Form, method_field() Helfer Laravel des verwenden: {{ method_field('DELETE') }}. Versuchen Sie nicht, Ihre Methode direkt auf delete zu setzen.

Die andere Antwort mit dem Formular-Helper-Paket laravel-collective funktioniert auch, aber das ist nicht standardmäßig in Laravel enthalten, also dachte ich mir, es wäre klug zu skizzieren, wie dies mit Raw HTML zu erreichen.

-1

Du hast ne ed Verfahren auf Form von POST ändern

Sie sehen auf dem Weg definiert Sie haben zu löschen, wie DELETE:

Route::delete('/customer_page/summary/{id}', '[email protected]_cart'); 
+0

Das Verfahren Attribut Formularelemente entfernen scheint zu unterstützen nur zu scheinen 'get' oder' Post' [nach MDN] (https: //developer.mozilla .org/de-DE/docs/Web/HTML/Element/Formular). Unterstützt es auch 'delete'? So oder so, ich denke, das ist auf dem richtigen Weg. – HPierce

+0

Er sagt noch MethodNotAllowedHttpException – jean9

+0

@HPierce Nein, HTML-Formulare nur GET und POST unterstützen. – patricus

0

Gehen Sie wie folgt (RESTFUL)

Route::resource('reservations', 'ReservationController'); 

OR (NON RESTFUL)

Route::delete('delete/{id}',array('uses' => '[email protected]', 'as' => 'My.route')); 

-Controller

public function destroy($id) 
{ 
    $item = Reservation::findOrFail($id); 
    $item->delete(); 

} 

Ansicht

@foreach($reservations as $item) 
    <tr> 
     <td>{{ $item->description }}</td> 

     <td> 
      {{ Form::open(['method' => 'DELETE', 'route' => 'reservations.destroy', $item->id]) }} 
       {{ Form::hidden('id', $item->id) }} 
       {{ Form::submit('Delete', ['class' => 'btn btn-danger']) }} 
      {{ Form::close() }} 
     </td> 
    </tr> 
@endforeach 

OR (für nicht geruhsame)

{{ Form::open(['route' => ['My.route', $value->id], 'method' => 'delete']) }} 
<button type="submit">Delete</button> 
{{ Form::close() }} 
Verwandte Themen