Laravel10を使って簡単なTODOアプリを作成してください。 UI作成はなくて良いです。
Laravel 10を使用して、基本的なTODOアプリを作成する手順を以下に示します。これは非常に基本的なバージョンで、データベースにTODOを保存し、一覧表示、追加、削除の機能のみを持っています。
-
新しいLaravelプロジェクトの作成
laravel new todo-app# 修正するようプロンプト送信 新しいLaravelプロジェクトの作成のコードが間違えています。修正してください。
申し訳ございません。確かにLaravelの新しいプロジェクトを作成するためのコマンドは以下のようになります。
composer create-project --prefer-dist laravel/laravel todo-app cd todo-app
-
データベースの設定
.env
ファイルを編集して、データベースの接続情報を設定します。DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=todo DB_USERNAME=root DB_PASSWORD=
-
マイグレーションの作成
TODOのためのテーブルを作成します。
php artisan make:migration create_tasks_table
新しく生成されたマイグレーションファイルを編集して、以下のようにテーブルのカラムを設定します。
public function up() { Schema::create('tasks', function (Blueprint $table) { $table->id(); $table->string('title'); $table->timestamps(); }); }
-
マイグレーションの実行
php artisan migrate
-
ルート、コントローラー、モデルの作成
まず、Taskモデルを作成します。
php artisan make:model Task
次に、コントローラーを作成します。
php artisan make:controller TaskController
TaskController
を編集して以下のメソッドを追加します:use App\Models\Task; use Illuminate\Http\Request; public function index() { $tasks = Task::all(); return view('tasks.index', compact('tasks')); } public function store(Request $request) { $task = new Task; $task->title = $request->title; $task->save(); return redirect('/'); } public function destroy(Task $task) { $task->delete(); return redirect('/'); }
-
ビューの作成
resources/views/tasks/index.blade.php
ファイルを作成して以下の内容を追加します。<h1>Tasks</h1> <form action="/" method="post"> @csrf <input type="text" name="title" placeholder="New Task"> <button type="submit">Add</button> </form> <ul> @foreach($tasks as $task) <li> {{ $task->title }} <form action="/{{ $task->id }}" method="post" style="display:inline;"> @csrf @method('DELETE') <button type="submit">Delete</button> </form> </li> @endforeach </ul>
-
ルートの設定
routes/web.php
を以下のように設定します。use App\Http\Controllers\TaskController; Route::get('/', [TaskController::class, 'index']); Route::post('/', [TaskController::class, 'store']); Route::delete('/{task}', [TaskController::class, 'destroy']);
これで基本的なTODOアプリが完成しました。ブラウザでプロジェクトのURLを開くと、TODOの一覧、追加、削除が行えます。
注意: これは基本的なアプリケーションで、エラーハンドリングやバリデーションなどの重要な機能は含まれていません。実際の利用の前には、セキュリティやユーザビリティの面から必要な機能を追加することが重要です。
続きをお願いします。
もちろん、次にTODOアプリの機能を少し拡張し、エラーハンドリングとバリデーションを追加します。
-
バリデーションの追加
TaskController
のstore
メソッドにバリデーションを追加します。public function store(Request $request) { $request->validate([ 'title' => 'required|max:255', ]); $task = new Task; $task->title = $request->title; $task->save(); return redirect('/')->with('success', 'Task added successfully!'); }
-
エラーメッセージの表示
tasks/index.blade.php
ビューにエラーメッセージの表示領域を追加します。@if ($errors->any()) <div> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif @if(session('success')) <div> {{ session('success') }} </div> @endif <!-- 以前のコードの続き -->
-
エラースタイルの追加
エラーが発生した場合に入力フィールドのスタイルを変更するために、クラスを追加します。
<form action="/" method="post"> @csrf <input type="text" name="title" placeholder="New Task" class="{{ $errors->has('title') ? 'error' : '' }}"> <button type="submit">Add</button> </form>
そして、
public/css/app.css
などのスタイルシートに次のスタイルを追加します(もしあれば):.error { border: 1px solid red; }
-
タスクが空の時のメッセージの表示
タスクが空の場合、メッセージを表示するように
tasks/index.blade.php
ビューを更新します。@if($tasks->isEmpty()) <p>No tasks available.</p> @else <ul> @foreach($tasks as $task) <!-- 以前のコードの続き --> @endforeach </ul> @endif
以上のステップで、基本的なエラーハンドリングとバリデーションがTODOアプリに追加されました。
次のステップとしては、アプリのデザインやユーザビリティの向上、セキュリティの強化、ユーザーアカウントの追加など、さまざまな機能や改善を考えることができます。