から削除するには、リソースのルートを使用してレコードを削除します:Laravelリソースルートaxios
public function destroy(Positions $positions) {
return $positions;
}
しかし、上記は常に「メソッドが許可されていません」を返します。 axios delete()
メソッドで削除要求を処理するにはどうすればよいですか?
から削除するには、リソースのルートを使用してレコードを削除します:Laravelリソースルートaxios
public function destroy(Positions $positions) {
return $positions;
}
しかし、上記は常に「メソッドが許可されていません」を返します。 axios delete()
メソッドで削除要求を処理するにはどうすればよいですか?
LaravelはMethodNotAllowedHttpException
スロー願っています。 JavaScriptコードがのみとPOSTリクエストをGET サポートしていることの経路によって処理され/job‑management
のパスとURLに DELETE要求を送信するため、この質問のケースでは、このエラーを参照してください。私たちは、URLを、Laravelが手抜きのコントローラに期待している従来のフォーマットに変更する必要があります。
私たちが間違ったURLにリクエストを送信しているという事実が隠れているので、エラーが混乱しています。理由を理解するために、(documentationから)Route::resource()
によって作成されたルートを見てみましょう:
Verb URI Action Route Name
GET /job-management index job-management.index
GET /job-management/create create job-management.create
POST /job-management store job-management.store
GET /job-management/{position} show job-management.show
GET /job-management/{position}/edit edit job-management.edit
PUT/PATCH /job-management/{position} update job-management.update
DELETE /job-management/{position} destroy job-management.destroy
以上のように、/job-management
のパスコンポーネントを有するURLはドン」コントローラのindex()
とstore()
メソッドに渡されますハンドル要求を削除します。これが例外を見る理由です。
{position}
は、我々は、削除したい位置モデルのIDで
/job-management/{position}
、のようなパスをURLにリクエストを送信する必要があります。 JavaScriptコードは次のようになります。
axios.delete('/job-management/5', this.deletedata).then((res) => { ... })
私は、概念を明確に示すためにURLに位置IDをハードコードしました。しかし、我々は、おそらく、このIDのための変数を使用する:このフォームで
let positionId = // get the position ID somehow
axios.delete(`/job-management/${positionId}`, this.deletedata).then((res) => { ... })
URLをルーティングするために、コントローラのdestroy()
方法にDELETE要求をLaravelを可能にします。上記の例ではES6 template string literalsが使用されています。このコードは、この機能をサポートするバージョンのJavaScriptを使用していることを示しているためです。テンプレート文字列の前後には、標準引用符の代わりにバッククォート(`
)を配置することに注意してください。
上記のコードでは、destroy
メソッドのパラメータとしてPositions
の雄弁を渡しますが、vueJS
ではこのオブジェクトを渡さないでください。そのためにあなたは、このようにそれを渡します。削除ウルaxiosのURL内部
axios.delete('/job-management/${id}').then((res)=>{
console.log(res);
})
とID PARAM、それはデータまたは任意のシンクタンクの対象とすることができます。
は、私たちは、ルートがサポートされていないHTTP動詞を使用してルートに要求を送信しようとすると、このヘルプはあなたが
"レコードを削除するようにAxiosを設定したい..." しかし、 '$ positions'は複数のレコードを削除することを意味しますか? 単一のリソースまたは複数のリソースを削除しようとしているかどうかを明確にすることはできますか? – Traxo
@CyRossignolこれは問題を解決してくれてありがとう –