Model Task.php View tasks/index.blade.php !DOCTYPE html> html lang="ja"> head> meta charset="utf-8"> meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> meta http-equiv="X-UA-Compatible" content="ie=edge"> meta name="csrf-token" content="{{ csrf_token() }}"> link rel="stylesheet" href="{{asset('css/app.css')}}"> title>Todo List App/title> /head> body> div class="container"> div class="row"> div class="offset-md-2 col-md-8"> h1 class="text-center">Todo List/h1> {{-- Session flash --}} @if(Session::has('success')) div class="alert alert-success" role="alert"> button type="button" class="close" data-dismiss="alert" aria-label="Close"> span aria-hidden="true">×/span> /button> strong>Success:/strong> {{ Session::get('success') }} /div> @endif {{-- Error Message --}} @if(count($errors) > 0) div class="alert alert-danger" role="alert"> button type="button" class="close" data-dismiss="alert" aria-label="Close"> span aria-hidden="true">×/span> /button> strong>Error:/strong> ul> @foreach($errors->all() as $error) li>{{ $error }}/li> @endforeach /ul> /div> @endif {{-- tasks.store --}} form action="{{ route('tasks.store')}}" method="POST"> {{ csrf_field() }} div class="form-group row"> div class="col-md-9"> input type="text" name="newTaskName" class="form-control" placeholder="Todo List"> /div> div class="col-md-3"> input type="submit" class="btn btn-primary form-control" value="Add Task"> /div> /div> /form> {{-- Table --}} @if(count($tasks) > 0) div class="table-responsive"> table class="table table-striped"> thead> tr> th scope="col">#/th> th scope="col">Name/th> th scope="col">Edit/th> th scope="col">Delete/th> /tr> /thead> tbody> @foreach($tasks as $task) tr> th scope="row">{{ $task->id }}/th> td>{{ $task->name }}/td> td> a href="{{ route('tasks.edit', ['tasks' => $task->id]) }}" class="btn btn-outline-secondary">Edit/a> /td> td> form action="{{ route('tasks.destroy', ['tasks' => $task->id]) }}" method="POST"> input type="hidden" name="_method" value="DELETE"> input type="hidden" name="_token" value="{{ csrf_token() }}"> input type="submit" class="btn btn-danger" value="Delete"> /form> /td> /tr> @endforeach /tbody> /table> /div> @endif {{-- Pagination --}} {{ $tasks->links('vendor.pagination.simple-bootstrap-4') }} /div> /div> /div> footer class="footer"> div class="container"> div class="text-center">Copyright © @php echo date('Y'); @endphp {{ config('app.name') }} All Rights Reserved./div> /div> /footer> script src="{{asset('js/app.js')}}">/script> /body> /html> tasks/edit.blade.php !DOCTYPE html> html lang="ja"> head> meta charset="utf-8"> meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> meta http-equiv="X-UA-Compatible" content="ie=edge"> meta name="csrf-token" content="{{ csrf_token() }}"> link rel="stylesheet" href="{{asset('css/app.css')}}"> title>Todo List App/title> /head> body> div class="container"> div class="row"> div class="offset-md-2 col-md-8"> h1 class="text-center">Todo List Edit/h1> @if(Session::has('success')) div class="alert alert-success" role="alert"> button type="button" class="close" data-dismiss="alert" aria-label="Close"> span aria-hidden="true">×/span> /button> strong>Success:/strong> {{ Session::get('success') }} /div> @endif @if(count($errors) > 0) div class="alert alert-danger" role="alert"> button type="button" class="close" data-dismiss="alert" aria-label="Close"> span aria-hidden="true">×/span> /button> strong>Error:/strong> ul> @foreach($errors->all() as $error) li>{{ $error }}/li> @endforeach /ul> /div> @endif form action="{{ route('tasks.update', [$task->id]) }}" method="POST"> {{ csrf_field() }} div class="form-group"> input type="hidden" name="_method" value="PUT"> input type="hidden" name="_token" value="{{ csrf_token() }}"> input type="text" name="updatedTaskName" class="form-control input-lg" value="{{ $task->name }}"> /div> div class="form-group"> input type="submit" value="Save Changes" class="btn btn-success btn-lg"> a href="{{ route('tasks.index') }}" class="btn btn-danger btn-lg float-right">Go Back/a> /div> /form> /div> /div> /div> footer class="footer"> div class="container"> div class="text-center">Copyright © @php echo date('Y'); @endphp {{ config('app.name') }} All Rights Reserved./div> /div> /footer> script src="{{asset('js/app.js')}}">/script> /body> /html> Controller TaskController.php namespace App\Http\Controllers; use App\Task; use Illuminate\Http\Request; class TaskController extends Controller { /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { $tasks = Task::orderBy('id', 'desc')->paginate(5); return view('tasks.index', compact('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) { $this->validate($request, [ 'newTaskName' => 'required|min:5|max:255', ]); # 5文字未満、255文字以上は入力制限 $task = new Task; $task->name = $request->newTaskName; # name="newTaskName" $task->save(); //記事が追加された時に上の方にメッセージを表示するようにします。セッションを使って、リダイレクト先で一回だけ表示できます。 Session::flash('success', 'New has been succesfully added!'); return redirect()->route('tasks.index'); } /** * Display the specified resource. * * @param \App\Task $task * @return \Illuminate\Http\Response */ public function show(Task $task) { // } /** * Show the form for editing the specified resource. * * @param \App\Task $task * @return \Illuminate\Http\Response */ public function edit($id) { $task = Task::findOrFail($id); return view('tasks.edit', compact('task')); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param \App\Task $task * @return \Illuminate\Http\Response */ public function update(Request $request, Task $task) { $this->validate($request, [ 'updatedTaskName' => 'required|min:5|max:255', ]); $task = Task::findOrFail($id); $task->name = $request->updatedTaskName; $task->save(); Session::flash('success', 'Task #' . $id . ' has been successfully update.'); return redirect()->route('tasks.index'); } /** * Remove the specified resource from storage. * * @param \App\Task $task * @return \Illuminate\Http\Response */ public function destroy($id) { $task = Task::findOrFail($id); $task->delete(); Session::flash('success', 'Task #' . $id . ' has been successfully deleted.'); return redirect()->route('tasks.index'); } } Routes Route::get('/', function () { return view('welcome'); }); Route::resource('/tasks', 'TaskController');