🔰
LaravelでTodoリストを実装してみよう!~実装編7:アカウント情報の閲覧と退会機能の実装~
はじめに
今回は、アカウント情報の閲覧と削除(退会)機能を実装していこうと思います。
アカウント情報閲覧機能の実装
ビューの作成
以下のコマンドを用いて、ビューを生成します。
sail artisan make:view todolist.userinfo
生成された、resources/views/todolist/userinfo.blade.php
を以下のように書き換えます。
resources/views/todolist/userinfo.blade.php
<x-layout.layout title="アカウント情報 | Todoアプリ">
<x-layout.todolist-single>
<div class="flex flex-col items-center">
<div class="my-4 text-4xl font-extrabold text-green-500">
アカウント情報
</div>
<div class="items-start">
<div class="flex items-start">
<div class="flex text-xl max-w-36 w-full">ユーザー名</div>
<div class="flex ml-4 text-xl">
{{ $name }}
</div>
</div>
<div class="flex items-start">
<div class="flex text-xl max-w-36 w-full">メールアドレス</div>
<div class="flex ml-4 text-xl">
{{ $email }}
</div>
</div>
</div>
<div class="flex mt-4">
<x-element.button-a :href="route('todolist')">一覧に戻る</x-element>
<x-element.button-withdrawal></x-element.button-withdrawal>
</div>
</div>
</x-layout.todolist-single>
</x-layout.layout>
コントローラーの作成
以下のコマンドを用いて、コントローラーを生成します。
sail artisan make:controller Todolist/User/UserInfoController --invokable
生成されたapp/Http/Controllers/Todolist/User/UserInfoController.php
を以下のように書き換えます。
app/Http/Controllers/Todolist/User/UserInfoController.php
public function __invoke(Request $request)
{
+ $user = Auth::user();
+ return view('todo.userinfo')->with(['name' => $user->name, 'email' => $user->email]);
}
ルーティング
routes/web.php
にuserinfo
ビューのルーティングを書き加えます。
routes/web.php
Route::middleware('auth')->group(function (){
////省略////
+ Route::get('userinfo-page', App\Http\Controllers\Todolist\User\UserInfoController::class)
+ ->name('userinfo-page');
});
退会機能の実装
退会ボタンの作成
続いて、退会ボタンを実装します。
退会ボタンの生成は、以下のコマンドを実行します。
sail artisan make:component element.button-withdrawal --view
生成されたresources/views/components/element/button-withdrawal.blade.php
を以下のように書き換えます。
resources/views/components/element/button-withdrawal.blade.php
<form action="{{ route('withdrawal') }}" method="POST" onclick="return confirm('アカウントを削除してもよろしいですか?\r\n※一度削除すると再度アカウントを登録する必要があります。');">
@method('DELETE')
@csrf
<button type="submit" class="
inline-flex justify-center
ml-4
py-2 px-4
text-white bg-red-500 hover:bg-red-600 focus:ring-red-500
border border-transparent
shadow-sm
text-lg
font-medium
rounded-md
focus:outline-none focus:ring-2 focus:ring-offset-2">
退会する
</button>
</form>
コントローラーの作成
以下のコマンドを用いて、コントロールを生成します。
sail artisan make:controller Todolist/User/WithdrawalController --invokable
生成したコントローラを以下のように書き換えます。
app/Http/Controllers/Todolist/User/WithdrawalContriller.php
public function __invoke(Request $request)
{
+ $user_id = Auth::id();
+ $user = User::where('id', $user_id)->firstOrFail();
+ $user->delete();
+ return redirect()->route('todolist');
}
ルーティング
routes/web.php
に退会機能のルーティングを書き加えます。
routes/web.php
Route::middleware('auth')->group(function (){
////省略////
+ Route::delete('user/delete', \App\Http\Controllers\Todolist\User\WithdrawalController::class)
+ ->name('withdrawal');
});
おわりに
今回は、アカウント情報の閲覧と削除機能を実装しました!
次回は、管理者アカウントを専用の簡単な管理画面を作っていきたいと思います!
ではでは!
Discussion