あるプログラミング教材(サイトリンク)のチュートリアルを参考にlaravelでTodo webアプリを作成しながら、勉強をしています。
こちらのサイトのチュートリアル(9)まではできたのですが、チュートリアル(10)エラーハンドリングでコードを模写したところエラーが出てしまい、laravel公式サイトを参考に書き換えようとしても、エラーがなくならない状況です。
まず最初、下記のURLのようなエラー(エラーリンク)が発生し、teratailの他の投稿投稿リンクを参考に、
app/Http/Controllers/HomeControllerの内容を下記のように修正したところ、
return redirect()->route('tasks.index', [ 'id' => $folder->id, ]);
↓
return redirect()->route('tasks.index', [$folder->id]);
下記のような新たなエラー(エラーリンク)が発生するようになりました。
このエラーを解消するために、公開されているgithubからコードをコピペしましたが、解消されませんでした。
大変恐れ入りますが、このエラーについてご教授いただけると幸いです。
以下関係があると思われるコードです。
resources/views/tasks/index.blade.php
@section('content') <div class="container"> <div class="row"> <div class="col col-md-4"> <nav class="panel panel-default"> <div class="panel-heading">フォルダ</div> <div class="panel-body"> <a href="{{ route('folders.create') }}" class="btn btn-default btn-block"> フォルダを追加する </a> </div> <div class="list-group"> @foreach($folders as $folder) <a href="{{ route('tasks.index', ['id' => $folder->id]) }}" class="list-group-item {{ $current_folder_id === $folder->id ? 'active' : '' }}" > {{ $folder->title }} </a> @endforeach </div> </nav> </div> <div class="column col-md-8"> <div class="panel panel-default"> <div class="panel-heading">タスク</div> <div class="panel-body"> <div class="text-right"> <a href="{{ route('tasks.create', ['id' => $current_folder_id]) }}" class="btn btn-default btn-block"> タスクを追加する </a> </div> </div> <table class="table"> <thead> <tr> <th>タイトル</th> <th>状態</th> <th>期限</th> <th></th> </tr> </thead> <tbody> @foreach($tasks as $task) <tr> <td>{{ $task->title }}</td> <td> <span class="label {{ $task->status_class }}">{{ $task->status_label }}</span> </td> <td>{{ $task->formatted_due_date }}</td> <td> <a href="{{ route('tasks.edit', ['id' => $task->folder_id, 'task_id' => $task->id]) }}"> 編集 </a> </td> </tr> @endforeach </tbody> </table> </div> </div> </div> </div> @endsection
app/Http/Controllers/TaskController
<?php namespace App\Http\Controllers; use App\Folder; use App\Http\Requests\CreateTask; use App\Http\Requests\EditTask; use App\Task; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; class TaskController extends Controller { /** * タスク一覧 * @param Folder $folder * @return \Illuminate\View\View */ public function index(Folder $folder) { // ユーザーのフォルダを取得する $folders = Auth::user()->folders()->get(); // 選ばれたフォルダに紐づくタスクを取得する $tasks = $folder->tasks()->get(); return view('tasks/index', [ 'folders' => $folders, 'current_folder_id' => $folder->id, 'tasks' => $tasks, ]); } /** * タスク作成フォーム * @param Folder $folder * @return \Illuminate\View\View */ public function showCreateForm(Folder $folder) { return view('tasks/create', [ 'folder_id' => $folder->id, ]); } /** * タスク作成 * @param Folder $folder * @param CreateTask $request * @return \Illuminate\Http\RedirectResponse */ public function create(Folder $folder, CreateTask $request) { $task = new Task(); $task->title = $request->title; $task->due_date = $request->due_date; $folder->tasks()->save($task); return redirect()->route('tasks.index', [ 'id' => $folder->id, ]); } /** * タスク編集フォーム * @param Folder $folder * @param Task $task * @return \Illuminate\View\View */ public function showEditForm(Folder $folder, Task $task) { $this->checkRelation($folder, $task); return view('tasks/edit', [ 'task' => $task, ]); } /** * タスク編集 * @param Folder $folder * @param Task $task * @param EditTask $request * @return \Illuminate\Http\RedirectResponse */ public function edit(Folder $folder, Task $task, EditTask $request) { $this->checkRelation($folder, $task); $task->title = $request->title; $task->status = $request->status; $task->due_date = $request->due_date; $task->save(); return redirect()->route('tasks.index', [ 'id' => $task->folder_id, ]); } /** * フォルダとタスクの関連性があるか調べる * @param Folder $folder * @param Task $task */ private function checkRelation(Folder $folder, Task $task) { if ($folder->id !== $task->folder_id) { abort(404); } } }
app/Http/Controllers/HomeController
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; class HomeController extends Controller { public function index() { // ログインユーザーを取得する $user = Auth::user(); // ログインユーザーに紐づくフォルダを一つ取得する $folder = $user->folders()->first(); // まだ一つもフォルダを作っていなければホームページをレスポンスする if (is_null($folder)) { return view('home'); } // フォルダがあればそのフォルダのタスク一覧にリダイレクトする // return redirect()->route('tasks.index', [ // 'id' => $folder->id, // ]); return redirect()->route('tasks.index', [$folder->id]); } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/10 02:52
2020/08/10 02:56
2020/08/10 03:14
2020/08/10 03:15
2020/08/10 03:18
2020/08/10 03:19
2020/08/10 09:02