現在、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
回答3件
あなたの回答
tips
プレビュー