2017-03-06 8 views
0

編集ページから更新ページに移動しようとしていますが、ドキュメントへのルーティング方法について説明するものは何もありません。これは私の編集ページに私のフォームされています編集から更新までどのようにリンクするのですか?

/* 
Or method="PUT" 
*/ 
<form method="PATCH" action="../{{$id}}"> 
{{ method_field('PUT') }} 
<input type="submit" value="edit"/> 
</form> 

私のルートは、リソースコントローラとして宣言されている:私のコントローラで

Routes::resource('/','TestController',['parameters' => [ 
    '' => 'test' 
]]); 

私は持っている:

public function update(Request $request, Test $test){ 
    return 'test'; 
} 

それはちょうど与えています複数の方法で更新アクションにアクセスしようとすると、私にさまざまなエラーが表示されます。

私が試した:私を与える{{route($id)}}を:

国道1

を定義されていないリソースのドキュメントは、URLを次のようになると仮定されていることを私に与えます:

PUT/PATCH /photos/{photo} 

私は、laravelとtheresのリソースコントローラのルーティングを理解するのは大したことではありません。私は単純に/{{$id}}/editから1を戻そうとしました:../{{$id}}しかし、それは私にショーアクションをもたらします(ショーとアップデートは同じURLを持っているので、明らかに同じURLを持っています)。そして、私はこれがコントローラからアクションにアクセスする最良の方法ではないとも思います。

+0

フォームの操作を指定していません。 –

+0

@RossWilsonええ、私はその空のままにしています。その下の例は、私が行動として試みたものです。 – Loko

答えて

0

があることを、タグを開いて、フォームを変更してみてください:

<form method="POST" action="{{ url($id) }}"> 
    {{ csrf_field() }} 
    {{ method_field('PUT') }} 

・ホープ、このことができます!

+0

それは動作しますが、なぜですか。なぜ私の他の試みが$ idに行かなかったのか分からない。 – Loko

+0

@Lokoあなたが 'route()'を使っていたからです。 https://laravel.com/docs/5.4/helpers#method-route –

0

リソースルートの場合は、コントローラの次のメソッドを持つことができます。 インデックス

public function index() 
    { 
     return view(); 
    } 

public function create() 
    { 
     // 
    } 

ストア

public function store(Request $request) 
    { 
     // 
    } 

public function show($id) 
    { 
     // 
    } 

を表示作成、編集

public function edit($id) 
    { 
     // 
    } 

更新

public function update(Request $request, $id) 
    { 
     // 
    } 

phpの職人を使用して、コントローラを作成します

public function destroy($id) 
    { 
     // 
    } 

を破壊します。これらのリソースメソッドは自動的に作成されます。

+0

これは、 – Loko

+0

についての私の話ではありません。これはルートモデルバインディングの編集です。 https://laravel.com/docs/5.4/routing#route-model-binding – Dhananjaya

+0

保存メソッドに保存コードを書き込んでください。リソースルートの編集URLはhttp://homedomain.com/route/id/editのようです – Dhananjaya

関連する問題