2016-10-07 14 views
4

を働いていないdestroyがすることは、私の形式である:ここではLaravelルートリソースはここ

<form action="{{ route('invoice.destroy' , $invoice->id)}}" method="DELETE"> 
       <div class="modal-footer no-border"> 
       <button type="button" class="btn btn-info" data-dismiss="modal">No</button> 
       <button type="submit" class="btn btn-primary">Yes</button> 
       <input type="hidden" name="_method" value="DELETE" /> 

       </div> 
       </form> 

は私のコントローラです:

public function destroy($id) 
{ 
    $invoice = Invoice::find($id); 
    if(!$invoice){ 
     return redirect()->route('invoice.index')->with(['fail' => 'Page not found !']); 
    } 
    $invoice->delete(); 
    return redirect()->route('invoice.index')->with(['success' => 'Invoice Deleted.']); 
} 

しかし、問題がどこにあるか、それは削除することはできませんか?どのようにこれを解決する?

+0

あなたが名前の_method PARAM隠されていません。 Form :: open()を使用します。 – Vuer

+0

Form :: openを使用していません。私はこの方法で解決したい。 –

答えて

5

あなたがフォームのPOSTメソッドを使用する必要があり、名前_methodと値DELETEinput要素を追加します。また、トークンを追加します:のみPOSTGETがHTML内で可能であるため、

<form action="{{ route('invoice.destroy' , $invoice->id)}}" method="POST"> 
    <input name="_method" type="hidden" value="DELETE"> 
    {{ csrf_field() }} 

    <div class="modal-footer no-border"> 
     <button type="button" class="btn btn-info" data-dismiss="modal">No</button> 
     <button type="submit" class="btn btn-primary">Yes</button> 
    </div> 
</form> 
+1

はい、うまくいきます。そんなに大変ありがとうございます@Alexey Mezenin –

+0

その後、どの方法を編集に使用できますか? –

+0

編集には 'Get'を使うべきですが、' edit'ではなく 'update'アクションが必要です(' edit'はフォームを表示するだけです)。 'update'では' Put'メソッドを使うべきです。 –

1

私はあなたが使用するメソッドが含まれていますフォームに隠し入力を追加する必要がありますと思う:

<form action="{{ route('invoice.destroy' , $invoice->id)}}" method="POST"> 
    <input type="hidden" name="_method" value="DELETE" /> 
</form> 

もっと読むLaravelのドキュメントにおよそForm method spoofing

+0

を追加してください。 –

+0

フォームのメソッドがPOSTでないことに注意してください。 –

+1

はい、ありがとうございました:)マテイ –

0

仕事をするPUTDELETEメソッドを取得するためには、(アウトオブボックス)、追加のフィールドが必要です。

追加フィールドは、コードで行われます。

{!! method_field('DELETE') !!} 

だからあなたのフォームは次のようになります。

<form action="{{ route('invoice.destroy' , $invoice->id)}}" method="DELETE"> 
    {!! method_field('DELETE') !!} 
    <div class="modal-footer no-border"> 
     <button type="button" class="btn btn-info" data-dismiss="modal">No</button> 
     <button type="submit" class="btn btn-primary">Yes</button> 
    </div> 
</form> 
+0

{{method_field( 'DELETE')}}さんはどういう意味ですか? –

+0

WIth '{!! method_field( 'DELETE')!!} '(感嘆符付き)Laravelは隠された入力ファイルを追加します。フォームをサブミットすると、LaravelはそのメソッドがDELETEであることを知り、 'Route :: delete()'を実行します – Galago

+0

これで解決しました。 –