目次
ルーティングを設定
下記のようにルーティングに一行追記してください。
今回はデータを取得するだけでなく保存するので、メソッドはpostにしてください。
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\TodoController;
// Route::get('/', function () {
// return view('welcome');
// });
Route::get('todo/index', [TodoController::class, 'index'])->name('todo.index');
Route::get('todo/create', [TodoController::class, 'create'])->name('todo.create');
Route::post('todo/store', [TodoController::class, 'store'])->name('todo.store'); //追記
コンロローラを設定
コントローラのstoreのところに、下記一行を追記しましょう。
public function store(Request $request)
{
$content = $request->input('content'); //追記
}
フォームの送信先を指定
create.blade.phpで作成したフォームの送信先として、actionに下記のように追記しましょう。
<div class="container-sm">
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
<h1>createです</h1>
<form action="POST" action="{{ route('todo.store') }}"> //action内を追記
@csrf
todoの内容:<input type="text" name="content">
<input type="submit" class="btn btn-info" value="登録する">
</form>
</div>
コントローラを編集する
コントローラファイルに下記のように追記します。(既に追記されてる内容はしなくてOKです。)
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Todo; //モデルと接続
use Illuminate\Support\Facades\DB;
class TodoController extends Controller
{
public function index()
{
$todos = DB::table('todos')
->select('id','content','done')
->get();
return view('todo.index', compact('todos'));
}
public function create()
{
return view('todo.create');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$todo = new Todo; //追記
$todo->content = $request->input('content'); //追記
$todo->done = '0'; //追記
$todo->save(); //追記
return redirect('todo/index'); //追記
}
//show以下は省きます
動作確認
動作確認をしてみて、無事にデータが保存されたら完了!
対応済みのところは、後でチェックボックスにするので一旦これでOKとします。
お疲れ様でした!