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

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

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

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

Laravel

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

解決済

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

kazukikanomata
kazukikanomata

総合スコア10

Cloud9

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

Laravel

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

3回答

0評価

0クリップ

431閲覧

投稿2021/12/23 03:05

編集2022/01/16 19:01

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

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

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

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

Postcontroller.php

<?php namespace App\Http\Controllers; use App\Task; use App\Category; use Illuminate\Http\Request; class PostController extends Controller { public function index(Task $task) { //tasksという変数名でtaskテーブルの全データを渡す return view('posts/index')->with(['tasks' => $task->get()]); } public function show(Task $task) { return view('posts/show')->with(['task' => $task]); } public function create(Category $category) { return view('posts/create')->with(['categories' => $category->get()]); } //保存 public function store(Request $request, Task $task) { $input = $request['task']; $input += ['user_id' => $request->user()->id]; $task->fill($input)->save(); return redirect('/posts/' . $task->id); } public function edit(Task $task) { return view('posts/edit')->with(['task' => $task]); } public function update(Request $request, Task $task) { $input_task = $request['task']; $task->fill($input_task)->save(); return redirect('/posts/' . $task->id); } public function destory(Task $task) { $task->delete(); $task->save(); return redirect(); } } ?>

index.blade.php

@extends('layouts.app')                   @section('content') <!DOCTYPE html> <html lang="{{ str_replace('_', '-', app()->getLocale()) }}"> <head> <meta charset="utf-8"> <title>テーブル一覧</title> <!-- Fonts --> <link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet"> </head> <body> <main> <div class="container"> <div class="row justify-center-center"> <div class="col-md-4"> <div class="card"> <div class="card-header">タスク追加・詳細</div> <div class="card-body"> <a href="posts/create">タスク追加</a><br> </div> </div> </div> <div class="col-md-8"> <div class="card"> <div class="card-header">タスク</div> <div class="card-body"> <div class="tasks"> <div class="task"> <table class="table"> <thead> <tr> <th class="id"></th> <th class="content">タスクの内容</th> <th class="due_time">期限</th> <th class="status">状態</th> <th class="time">かかる時間</th> <th class="icon"></th> <th class="icon"></th> </tr> </thead> <tbody> @foreach ($tasks as $task) <tr> <td>{{$task->id}}</td> <td><a href="/posts/{{$task->id}}">{{$task->content}}</a></td> <td>{{$task->due_time}}</td> <td>{{$task->status}}</td> <td>{{$task->time}}時間</td> <td><a href="posts/{{ $task->id }}/edit">編集️</a></td> <form method="post" action="{{ action('PostController@destory' , $task->id) }}" id="delete_{{ $task->id}}" > {{ @method_field('delete') }} @csrf <td><button data-id="{{ $task->id }}" class="btn btn-danger btn-sm" onclick="deletePost(this);" >削除️<button></td> </form> </tr> </tbody> @endforeach </table> </div> </div> </div> </div> </div> </div> </div> </main> </body> </html> <script> function deletePost(e) { 'use strict'; if (confirm('本当に削除しますか?')){ document.getElementById('delete_'+ e.dataset.id).submit(); } } </script> @endsection

Task.php

<?php namespace App; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; class Task extends Model { use SoftDeletes; public function user() { return $this->belongsTo('App\User'); } public function category() { return $this->belongsTo('App\Category'); } // function getPaginateByLimit(int $limit_count = 5) // { // return $this::with('category')->orderBy('updated_at', 'DESC')->paginate($limit_count); // } protected $fillable = [ 'user_id', 'category_id', 'content', 'due_time', 'status', 'time', ]; }

web.php

<?php /* |-------------------------------------------------------------------------- | Web Routes |-------------------------------------------------------------------------- | | Here is where you can register web routes for your application. These | routes are loaded by the RouteServiceProvider within a group which | contains the "web" middleware group. Now create something great! | */ Route::get('/', 'PostController@index'); Route::get('posts/create', 'PostController@create'); Route::get('/posts/{task}', 'PostController@show'); Route::post('/posts', 'PostController@store'); Route::get('/posts/{task}/edit', 'PostController@edit'); Route::put('/posts/{task}', 'PostController@update'); Route::delete('/posts/{task}', 'PostController@destory'); Auth::routes(); Route::get('/home', 'HomeController@index')->name('home');

データベース

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

phper.k

2021/12/23 11:11

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

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Cloud9

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

Laravel

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