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

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

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

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Q&A

解決済

3回答

2835閲覧

Laravel 削除機能 実装したのに、ボタン押しても消えない

kazukikanomata

総合スコア10

Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

0グッド

0クリップ

投稿2021/12/23 03:05

編集2022/01/12 05:20

現在、laravel6.2で就活に向けてTodoアプリを制作しているものです。

メインページで削除ボタンを押したら、その選択したタスクが消えるようにしたいのですが、ボタンを押しても削除できなくなっています。
色々試してはみたのですが、上手くできなくて、

選択したidとタスクが一致していれば選んだものが消える
そのために、選択したidを取得して、ボタンを押したときに選択したidと等しいものが消える

→これができればいいと思うのですが、コントローラの書き方に原因があるのでしょうか?
お答えいただければ幸いです。

Postcontroller.php

1<?php 2 3namespace App\Http\Controllers; 4use App\Task; 5use App\Category; 6 7use Illuminate\Http\Request; 8 9class PostController extends Controller 10{ 11 public function index(Task $task) 12 { 13 //tasksという変数名でtaskテーブルの全データを渡す 14 return view('posts/index')->with(['tasks' => $task->get()]); 15 } 16 public function show(Task $task) 17 { 18 return view('posts/show')->with(['task' => $task]); 19 } 20 21 public function create(Category $category) 22 { 23 return view('posts/create')->with(['categories' => $category->get()]); 24 } 25 //保存 26 public function store(Request $request, Task $task) 27 { 28 $input = $request['task']; 29 $input += ['user_id' => $request->user()->id]; 30 $task->fill($input)->save(); 31 return redirect('/posts/' . $task->id); 32 } 33 public function edit(Task $task) 34 { 35 return view('posts/edit')->with(['task' => $task]); 36 } 37 public function update(Request $request, Task $task) 38 { 39 $input_task = $request['task']; 40 $task->fill($input_task)->save(); 41 return redirect('/posts/' . $task->id); 42 } 43 public function destory(Task $task) 44 { 45 $task->delete(); 46 $task->save(); 47 return redirect(); 48 } 49} 50?>

index.blade.php

1@extends('layouts.app')                   2 3@section('content') 4<!DOCTYPE html> 5<html lang="{{ str_replace('_', '-', app()->getLocale()) }}"> 6 <head> 7 <meta charset="utf-8"> 8 <title>テーブル一覧</title> 9 <!-- Fonts --> 10 <link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet"> 11 </head> 12 <body> 13 <main> 14 <div class="container"> 15 <div class="row justify-center-center"> 16 <div class="col-md-4"> 17 <div class="card"> 18 <div class="card-header">タスク追加・詳細</div> 19 <div class="card-body"> 20 <a href="posts/create">タスク追加</a><br> 21 </div> 22 </div> 23 </div> 24 <div class="col-md-8"> 25 <div class="card"> 26 <div class="card-header">タスク</div> 27 <div class="card-body"> 28 <div class="tasks"> 29 <div class="task"> 30 <table class="table"> 31 <thead> 32 <tr> 33 <th class="id"></th> 34 <th class="content">タスクの内容</th> 35 <th class="due_time">期限</th> 36 <th class="status">状態</th> 37 <th class="time">かかる時間</th> 38 <th class="icon"></th> 39 <th class="icon"></th> 40 </tr> 41 </thead> 42 <tbody> 43 @foreach ($tasks as $task) 44 <tr> 45 <td>{{$task->id}}</td> 46 <td><a href="/posts/{{$task->id}}">{{$task->content}}</a></td> 47 <td>{{$task->due_time}}</td> 48 <td>{{$task->status}}</td> 49 <td>{{$task->time}}時間</td> 50 <td><a href="posts/{{ $task->id }}/edit">編集️</a></td> 51 <form method="post" action="{{ action('PostController@destory' , $task->id) }}" id="delete_{{ $task->id}}" > 52 {{ @method_field('delete') }} 53 @csrf 54 <td><button data-id="{{ $task->id }}" class="btn btn-danger btn-sm" onclick="deletePost(this);" >削除️<button></td> 55 </form> 56 </tr> 57 </tbody> 58 @endforeach 59 </table> 60 </div> 61 </div> 62 </div> 63 </div> 64 </div> 65 </div> 66 </div> 67 </main> 68 </body> 69</html> 70<script> 71function deletePost(e) { 72 'use strict'; 73 if (confirm('本当に削除しますか?')){ 74 document.getElementById('delete_'+ e.dataset.id).submit(); 75 } 76} 77</script> 78 79 80 81@endsection

Task.php

1<?php 2 3namespace App; 4 5use Illuminate\Database\Eloquent\Model; 6use Illuminate\Database\Eloquent\SoftDeletes; 7class Task extends Model 8{ 9 use SoftDeletes; 10 public function user() 11 { 12 return $this->belongsTo('App\User'); 13 } 14 public function category() 15 { 16 return $this->belongsTo('App\Category'); 17 } 18 // function getPaginateByLimit(int $limit_count = 5) 19 // { 20 // return $this::with('category')->orderBy('updated_at', 'DESC')->paginate($limit_count); 21 // } 22 23 protected $fillable = [ 24 'user_id', 25 'category_id', 26 'content', 27 'due_time', 28 'status', 29 'time', 30 ]; 31} 32

web.php

1<?php 2 3/* 4|-------------------------------------------------------------------------- 5| Web Routes 6|-------------------------------------------------------------------------- 7| 8| Here is where you can register web routes for your application. These 9| routes are loaded by the RouteServiceProvider within a group which 10| contains the "web" middleware group. Now create something great! 11| 12*/ 13 14Route::get('/', 'PostController@index'); 15Route::get('posts/create', 'PostController@create'); 16Route::get('/posts/{task}', 'PostController@show'); 17Route::post('/posts', 'PostController@store'); 18Route::get('/posts/{task}/edit', 'PostController@edit'); 19Route::put('/posts/{task}', 'PostController@update'); 20Route::delete('/posts/{task}', 'PostController@destory'); 21 22 23 24Auth::routes(); 25 26Route::get('/home', 'HomeController@index')->name('home'); 27

データベース

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

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

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

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

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

phper.k

2021/12/23 11:11

コードをスクショで出すのはヤメロ 検証するのに文字起こししなきゃいかん
guest

回答3

0

<a ...>削除</a>=> <button ...>削除</button>(href属性のみ外してください)でいけなかったら教えてください。

投稿2022/01/01 14:50

hoboki

総合スコア52

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

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

0

削除した後はsave()を実行しないと、削除されないのではないでしょうか。

PostController

1public function destroy(Task $task) 2{ 3 $task->delete(); 4 $task->save(); 5 6 return redirect(); 7}

投稿2021/12/26 00:43

super-sub

総合スコア30

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

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

0

自己解決

無事修正できました。

<td></td>のタグがちょっとバグっていたのとが主な原因でした。 ご意見ありがとうございました!

index.blade.php

1<td> 2 <form method="post" action="{{ action('PostController@destory', $task->id) }}" id="delete_{{ $task->id}}" > 3 @csrf 4 @method('DELETE') 5 <button type="submit" class="btn btn-danger" onclick="return confirm('本当に削除しますか?');">削除</button> 6 </form> 7 </td>

投稿2022/01/16 10:01

kazukikanomata

総合スコア10

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問