前提・実現したいこと
PHP(larvel)でタスク管理システムを作っています。
completed_atカラムに現在の日時を保存し、indexページをリダイレクトするタスクの完了ボタンを実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
todos/indexページ(完了ボタンを表示しようとしているページ)を
開いたところ、下記のようなメッセージが出ました。
Undefined variable: todo (View: C:\xampp\htdocs\Todolist_0813\Todo202008\Todo202008\Todo_laravel\resources\views\todos\index.blade.php)
該当のソースコード
laravel
1 {{--index.blade.php内--}} 2 {{--完了ボタン--}} 3 <td><form action="{{ route('todo.update',['id' => $todo->id]) }}" method="post"> //エラーが出ている行 4 {{ csrf_field() }} 5 <button type="submit" class="btn btn-success">完了</button> 6 </form> 7 </td>
laravel
1 {{--web.php--}} 2Route::group(['prefix' => 'todos', 'middleware' => 'auth'], function(){ 3 Route::get('index', 'TodosController@index') ->name('todo.index'); 4 Route::get('create', 'TodosController@create') ->name('todo.create'); 5 Route::post('/index', 'TodosController@store') ->name('todo.store'); 6 Route::get('show/{id}', 'TodosController@show') ->name('todo.show'); 7 Route::get('edit/{id}', 'TodosController@edit') ->name('todo.edit'); 8 Route::post('update/{id}', 'TodosController@update') ->name('todo.update'); 9 Route::post('delete/{id}', 'TodosController@destroy') ->name('todo.destroy'); 10});
laravel
1 {{--controller.php--}} 2 public static function Date(){ 3 $date = date("y-m-d"); 4 return $date; 5 } 6public function update($id) { 7 // 完了日を入力 8 $todo = Todo::find($id); 9 $todo->completed_at = self::Date(); 10 $todo->save(); 11 return redirect('todos/index',compact('todo')); 12 } 13 14 public function edit($id) { 15 $todos = Todo::find($id); 16 $frequency = frequency::all(); 17 return view('todos.edit',compact('todos','frequency')); 18 } 19 20 public static function index(){ 21 $frequencys = frequency::where('frequency','=', self::Datetime()) 22 ->whereHas('todos',function($q){ 23 $q->where('completed_at','<>', self::Date()) 24 ->orderBy('difficultyLevel', 'desc'); 25 }) 26 ->get(); 27 $datas = []; 28 foreach ($frequencys as $frequency) { 29 $datas[] = [ 30 'id' => $frequency->todos->id, 31 'body' => $frequency->todos->body, 32 'difficultyLevel' => $frequency->todos->difficultyLevel, 33 'frequency' => $frequency->frequency 34 ]; 35 } 36 37 return view('todos/index',compact('frequencys','datas')); 38 } 39
補足情報(FW/ツールのバージョンなど)
PHP 7.4.9
laravel 6.18.35
MySQL 5.7.26
回答3件
あなたの回答
tips
プレビュー