🔰
LaravelでTodoリストを実装してみよう!~実装編4:Todo削除・完了機能の実装~
はじめに
今回は、Todo削除・完了機能を実装していこうと思います!
前回の記事からかなり時間がたってしまって申し訳ないです
前回の記事はこちら↓
Todo削除機能の作成
まずは削除機能を実装していきます!
コントローラーの作成
最初に、コントローラーを作成します!
コントローラーファイルの生成には、以下のコマンドを実行します。
sail artisan make:controller Todolist/DeleteTodo/DeleteTodoController --invokable
生成されたapp/Http/Controllers/Todolist/DeleteTodo/DeleteTodoController.php
ファイルを以下のように書き換えます。
app/Http/Controllers/Todolist/DeleteTodo/DeleteTodoController.php
<?php
namespace App\Http\Controllers\Todolist\DeleteTodo;
use App\Http\Controllers\Controller;
+ use App\Models\Todolist;
use Illuminate\Http\Request;
class DeleteTodoController extends Controller
{
/**
* Handle the incoming request.
*/
public function __invoke(Request $request)
{
+ $todoId = $request->route('todoId');
+ $todo = Todolist::where('id', $todoId)->firstOrFail();
+ $todo->delete();
+ return redirect()->route('todolist');
}
}
ルーティング
routes/web.php
に以下のコードを書き加えます。
routes/web.php
//// 省略 ////
Route::delete('todo/delete/{todoId}', \App\Http\Controllers\Todolist\DeleteTodo\DeleteTodoController::class)
->name('deletetodo')->where('todoId', '[0-9]+');
動作確認
今回は、実装編1にて削除ボタンのコンポーネントを作っているので、ビューの修正はありません。
http://localhost/todolist
にアクセスして、適当なTodoの削除ボタンを押してみて、Todoが一覧から削除されたら正常に動作しています!
Todo完了機能の作成
続いて、完了したTodoを処理するための機能を作っていきます!
コントローラーの作成
まず、コントローラーを作成していきます。
sail artisan make:controller Todolist/CheckTodoController --invokable
生成されたapp/Http/Controllers/Todolist/CheckTodoController.php
を以下のように書き換えます。
app/Http/Controllers/Todolist/CheckTodoController.php
<?php
namespace App\Http\Controllers\Todolist;
use App\Http\Controllers\Controller;
+ use App\Models\Todolist;
use Illuminate\Http\Request;
class CheckTodoController extends Controller
{
/**
* Handle the incoming request.
*/
public function __invoke(Request $request)
{
+ $todoId = $request->route('todoId');
+ $todo = Todolist::where('id', $todoId)->firstOrFail();
+ $todo->status = 1;
+ $todo->save();
+ return redirect()->route('todolist');
}
}
ルーティング
routes/web.php
に以下のコードを書き加えます。
routes/web.php
//// 省略 ////
Route::put('todo/checktodo/{todoId}', \App\Http\Controllers\Todolist\CheckTodoController::class)
->name('checktodo')->where('todoId', '[0-9]+');
動作確認
http://localhost/todolist
にアクセスして、適当なTodoのチェックボタンを押してみます。
リストから消えていれば成功です!
おわりに
今回は、Todoの削除と完了機能を実装しました!
次回は、Todoの復元機能を作っていきたいと思います!
ではでは!
Discussion