質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

4回答

4339閲覧

Laravel 記事の削除ができない("The POST method is not supported for this route. Supported methods: DELETE.")

y_ymo10

総合スコア16

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2019/06/03 11:46

#最終的な目標
任意の記事をModelのdelete()を使用し削除することをしたいと考えています。

#ソースコード
###HomeController.php

PHP

1namespace App\Http\Controllers; 2use Illuminate\Support\Facades\Auth; 3use App\Http\Controllers\DB; 4use Illuminate\Http\Request; 5use App\Post; 6use Illuminate\Support\Facades\Storage; 7class HomeController extends Controller 8{ 9 /** 10 * Create a new controller instance. 11 * 12 * @return void 13 */ 14 public function __construct() 15 { 16 $this->middleware('auth'); 17 } 18//〜〜その他のコード省略〜〜〜〜〜〜〜〜〜〜〜 19 20 public function destroy(Post $post) { 21 $post->delete(); 22 return redirect('/star/admin'); 23 } 24}

###web.php

PHP

1//〜〜その他のコード省略〜〜〜〜〜〜〜〜〜〜〜 2Route::delete('/posts/dell/{post}', 'HomeController@destroy');

###home.blade.php

PHP

1 @foreach($val as $pages) 2 3 <tr> 4 5 <td>{{$pages->updated_at}}</td> 6 <td><a href="{{url('/page/'.$pages->id )}}">{{ $pages->title }}</a></td> 7 <td><span id="{{$pages->type}}"></span></td> 8 <td> 9 10//下記の削除ボタンをクリックしたら削除処理実行 11<a class="btn btn-danger" href="#"data-id="{{$pages->id}}">削除</a></td> 12 </tr> 13 14 <form method="post" action="{{url('/posts/dell',$pages->id)}}"id="form_{{$pages->id}}"> 15 {{ csrf_field() }} 16 {{ method_field('delete') }} 17 </form> 18 @endforeach

###main.js

JavaScript

1document.addEventListener( 'DOMContentLoaded' , function( e ) { 2 'use strict'; 3 var cmds = document.getElementsByClassName('btn btn-danger'); 4 var i; 5 for ( i = 0; i < cmds.length; i++ ) { 6 cmds[ i ].addEventListener( 'click', function( e ) { 7 e.preventDefault(); 8 if ( confirm( 'are you sure?' ) ) { 9 document.getElementById( 'form_' + this.dataset.id ).submit(); 10 } 11 }, false ); 12 } 13}, false );

#エラーメッセージ

ErrorMessage

1"The POST method is not supported for this route. Supported methods: DELETE."

#その他

  • ドットインストールのコードを元にしています。

全く解決方法が見いだせません…
どなたかご親切なかたご教授お願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

JavaScriptを使用したSubmitを削除し、<input type="submit" value="削除">を使用した送信で削除ができるようになった。

投稿2019/06/03 13:14

y_ymo10

総合スコア16

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

同様のエラーに遭遇しました。
javascriptを使用するとこのエラーになることがあるようです。

投稿2021/09/02 08:33

aaa1026

総合スコア20

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

bootstrap使ってるなら削除確認はbootstrapのModal使えばいいのでは。
自分がいつもやってること。

削除ボタンクリックでモーダル表示
→モーダル内の削除ボタンで実際に削除。
htmlしか書いてないのでJSからsubmitしてるからなにかおかしいとかがない。

削除確認程度にmain.jsみたいなこと書きたくない。Laravelの学習とは関係ない部分だから適当に流せばいい。

投稿2019/06/03 12:51

kawax

総合スコア10377

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_ymo10

2019/06/03 13:12 編集

回答ありがとうございます。Jsを使用せずsubmitしたところ解決いたしました。 対応ありがとうございました。
guest

0

動作確認していませんが…

Laravel web.php側で、メソッド「delete」で受けているのに、
View側のformタグのmethod属性が、「POST」になっているからだと思います。
web.phpでのメソッドと合わせる必要があります。

home.blade.php

php

1 <form method="delete" action="{{url('/posts/dell',$pages->id)}}"id="form_{{$pages->id}}">

投稿2019/06/03 12:05

pochi_kun

総合スコア36

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_ymo10

2019/06/03 12:19

返信ありがとうございます。修正して試しましたが、同じメッセージが表示されました。 deleteで送信することは、method_field('delete')を設置しているので問題ないかと思うのですが、他におかしな点がありましたら、ご指摘お願いします。
pochi_kun

2019/06/03 12:39

なるほど、これはお恥ずかしい、大変失礼いたしました。 ちなみに、生成されたHTML上はどのようになっていますか? また、Laravelのバージョンはいくつでしょうか?
y_ymo10

2019/06/03 12:48 編集

バージョンですが、5.8.19 です. 生成されたコードは下記のとおりです。 <td>2019-05-30 11:11:23</td> <td><a href="http://">テスト投稿4</a></td> <td><span id="event"></span></td> <td><a href="http:///post/31/" class="btn btn-success">編集</a><a class="btn btn-danger" href="#"data-id="31">削除</a></td> </tr> <form method="delete" action=/posts/dell/31"id="form_31"> <input type="hidden" name="_token" value=""> <input type="hidden" name="_method" value="delete"> </form> </tbody> </table> トークンとactionのアドレスはすみませんが、削除しました。 対応お願いいたします。
y_ymo10

2019/06/03 13:12

先程、JavaScriptを使用せずSubmitしたところ解決いたしました。対応ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問