前提・実現したいこと
Laravelの入門にちょうど良さそうな以下のチュートリアルを現在やっています。
https://www.hypertextcandy.com/laravel-tutorial-create-task
発生している問題・エラーメッセージ
チュートリアル通りに進めてもエラーが発生して進めなくなりました。。。
上記リンクの**「タスクを保存する」**の段階でこのようなエラーが発生しました。
Carbon\Exceptions\InvalidFormatException Unexpected data found. Unexpected data found. Data missing (View: /Users/xxx/resources/views/tasks/index.blade.php)
該当のソースコード
resources/views/tasks/index.blade.php
html
1@extends('layout') 2 3@section('content') 4 <div class="container"> 5 <div class="row"> 6 <div class="col col-md-4"> 7 <nav class="panel panel-default"> 8 <div class="panel-heading">フォルダ</div> 9 <div class="panel-body"> 10 <a href="{{ route('folders.create') }}" class="btn btn-default btn-block"> 11 フォルダを追加する 12 </a> 13 </div> 14 <div class="list-group"> 15 @foreach($folders as $folder) 16 <a 17 href="{{ route('tasks.index', ['id' => $folder->id]) }}" 18 class="list-group-item {{ $current_folder_id === $folder->id ? 'active' : '' }}" 19 > 20 {{ $folder->title }} 21 </a> 22 @endforeach 23 </div> 24 </nav> 25 </div> 26 <div class="column col-md-8"> 27 <div class="panel panel-default"> 28 <div class="panel-heading">タスク</div> 29 <div class="panel-body"> 30 <div class="text-right"> 31 <a href="{{ route('tasks.create', ['id' => $current_folder_id]) }}" class="btn btn-default btn-block"> 32 タスクを追加する 33 </a> 34 </div> 35 </div> 36 <table class="table"> 37 <thead> 38 <tr> 39 <th>タイトル</th> 40 <th>状態</th> 41 <th>期限</th> 42 <th></th> 43 </tr> 44 </thead> 45 <tbody> 46 @foreach($tasks as $task) 47 <tr> 48 <td>{{ $task->title }}</td> 49 <td> 50 <span class="label {{ $task->status_class }}">{{ $task->status_label }}</span> 51 </td> 52 <td>{{ $task->formatted_due_date }}</td> 53 <td><a href="#">編集</a></td> 54 </tr> 55 @endforeach 56 </tbody> 57 </table> 58 </div> 59 </div> 60 </div> 61 </div> 62@endsection
TaskController.php
php
1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6use App\Http\Requests\CreateTask; 7use App\Folder; 8use App\Task; 9 10 11class TaskController extends Controller 12{ 13 public function index(int $id) 14 { 15 // Folder モデルの all クラスメソッドですべてのフォルダデータをデータベースから取得 16 $folders = Folder::all(); 17 18 // 選ばれたフォルダを取得する 19 $current_folder = Folder::find($id); 20 21 // 選ばれたフォルダに紐づくタスクを取得する 22 $tasks = $current_folder->tasks()->get(); 23 24 // dd($folders); 25 return view('tasks/index', [ 26 // 「$folders」や「$tasks」がbladeで使われる 27 'folders' => $folders, 28 'current_folder_id' => $current_folder->id, 29 'tasks' => $tasks, 30 ]); 31 } 32 33 /** 34 * GET /folders/{id}/tasks/create 35 */ 36 public function showCreateForm(int $id) 37 { 38 return view('tasks/create', [ 39 'folder_id' => $id 40 ]); 41 } 42 43 public function create(int $id, CreateTask $request) 44 { 45 $current_folder = Folder::find($id); 46 47 $task = new Task(); 48 $task->title = $request->title; 49 dd($request->due_date); 50 $task->due_date = $request->due_date; 51 52 $current_folder->tasks()->save($task); 53 54 return redirect()->route('tasks.index', [ 55 'id' => $current_folder->id, 56 ]); 57 } 58}
Task.php
php
1<?php 2 3namespace App; 4 5use Illuminate\Database\Eloquent\Model; 6use Carbon\Carbon; 7 8class Task extends Model 9{ 10 /** 11 * 状態定義 12 */ 13 const STATUS = [ 14 1 => [ 'label' => '未着手', 'class' => 'label-danger' ], 15 2 => [ 'label' => '着手中', 'class' => 'label-info' ], 16 3 => [ 'label' => '完了', 'class' => '' ], 17 ]; 18 19 /** 20 * 状態のラベル 21 * @return string 22 */ 23 public function getStatusLabelAttribute() 24 { 25 // 状態値 26 $status = $this->attributes['status']; 27 28 // 定義されていなければ空文字を返す 29 if (!isset(self::STATUS[$status])) { 30 return ''; 31 } 32 33 return self::STATUS[$status]['label']; 34 } 35 36 /** 37 * 整形した期限日 38 * @return string 39 */ 40 public function getFormattedDueDateAttribute() 41 { 42 return Carbon::createFromFormat('Y-m-d H:i:s', $this->attributes['due_date']) 43 ->format('Y/m/d'); 44 } 45}
###試した事
TaskController.php
でddを使って取得している内容を確認してみました。
dd($request->due_date);
と dd($task->due_date);
では以下のような状態で取得できています。
"2020/09/30"
補足情報(FW/ツールのバージョンなど)
チュートリアルではLaravelのバージョンは5系らしいのですが、私はv6です。
やはりこのバージョンの違いが関係してるのでしょうか?
php artisan --version Laravel Framework 6.18.40
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。