Laravelチュートリアルにて、分からない点があり質問させて貰いました。
疑問点のある箇所は「8.削除処理の作成」の部分です。
以下、はソースコードとなります。
(task.blade.php)
@extends('layouts.app') @section('content') <div class="panel-body"> <!-- バリデーションエラーの表示に使用するエラーファイル--> @include('common.errors') <!-- タスク登録フォーム --> <form action="{{ route('tasks.store') }}" method="POST" class="form-horizontal"> @csrf <div class="form-group"> <!-- タスク名 --> <div class="col-sm-6"> <label for="task" class="col-sm-3 control-label">Task</label> <input type="text" name="task" id="task" class="form-control"> </div> </div> <!-- タスク登録ボタン --> <div class="form-group"> <div class="col-sm-offset-3 col-sm-6"> <button type="submit" class="btn btn-primary">Save</button> </div> </div> </form> <!-- この下に登録済みタスクリストを表示 --> <!-- 表示領域 --> @if (count($tasks) > 0) <div class="panel panel-default"> <div class="panel-heading">タスクリスト</div> <div class="panel-body"> <table class="table table-striped task-table"> <!-- テーブルヘッダ --> <thead> <th>タスク</th> </thead> <!-- テーブル本体 --> <tbody> @foreach ($tasks as $task) <tr> <td class="table-text"> <div>{{ $task->task }}</div> </td> <td> <!-- 削除ボタン --> <form action="{{ route('tasks.destroy',$task->id) }}" method="POST"> <!--@method('delete')--> @csrf <button type="submit" class="btn btn-danger">削除</button> </form> </td> </tr> @endforeach </tbody> </table> </div> </div> @endif <!-- ここまでタスクリスト --> </div> @endsection
(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('/', function () { return view('welcome'); }); Route::resource('tasks', 'TasksController')->only([ 'index', 'store', 'edit', 'update', 'destroy' ]); Auth::routes(); Route::get('/home', 'HomeController@index')->name('home');
(TaskController.php)
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Validator; use App\Task; class TasksController extends Controller { /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { // $tasks = Task::orderBy('deadline', 'asc')->get(); // ddd($tasks); return view('tasks', [ 'tasks' => $tasks ]); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { // } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { // // バリデーション $validator = Validator::make($request->all(), [ 'task' => 'required|max:255', ]); // バリデーション:エラー if ($validator->fails()) { return redirect() ->route('tasks.index') ->withInput() ->withErrors($validator); } // Eloquentモデル $task = new Task; $task->task = $request->task; $task->deadline = '2019-10-21'; $task->comment = 'todo!'; $task->save(); // ルーティング「tasks.index」にリクエスト送信(一覧ページに移動) return redirect()->route('tasks.index'); } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show($id) { // } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { // } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { // } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { $task = Task::find($id); $task->delete(); return redirect()->route('tasks.index'); } }
task.blade.phpの削除処理部分に、@method('delete')
を指定していますが、この部分はform内において、postで送信はされるもののdeleteメソッドとして処理をしたい(Taskcontrollerのdestroyメソッドに処理をさせたい)といった点から、このように指定を行なっているといった認識で正しいのでしょうか?
理解が曖昧な部分があります為、どなたか教えて頂けましたら幸いです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。