質問編集履歴
2
TaskControllerファイルの追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -87,6 +87,8 @@
|
|
87
87
|
|
88
88
|
**blade**
|
89
89
|
```php
|
90
|
+
<!-- views/tasks/index.blade.php -->
|
91
|
+
|
90
92
|
@extends('layout')
|
91
93
|
|
92
94
|
@section('content')
|
@@ -146,4 +148,93 @@
|
|
146
148
|
</div>
|
147
149
|
</div>
|
148
150
|
@endsection
|
151
|
+
```
|
152
|
+
|
153
|
+
```php
|
154
|
+
<?php
|
155
|
+
|
156
|
+
namespace App\Http\Controllers;
|
157
|
+
|
158
|
+
use App\Http\Requests\CreateTask;
|
159
|
+
use App\Http\Requests\EditTask;
|
160
|
+
use App\Models\Folder;
|
161
|
+
use App\Models\Task;
|
162
|
+
use Illuminate\Http\Request;
|
163
|
+
|
164
|
+
class TaskController extends Controller
|
165
|
+
{
|
166
|
+
public function index(int $id)
|
167
|
+
{
|
168
|
+
// Folderテーブルから全データを取得
|
169
|
+
$folders = Folder::all();
|
170
|
+
|
171
|
+
// Folderテーブルから選ばれたフォルダを取得する
|
172
|
+
$current_folder = Folder::find($id);
|
173
|
+
|
174
|
+
// 選ばれたフォルダに紐づくタスクを取得する
|
175
|
+
// $tasks = Task::where('folder_id', $current_folder->id)->get();
|
176
|
+
$tasks = $current_folder->tasks()->get();
|
177
|
+
|
178
|
+
return view('tasks/index', [
|
179
|
+
'folders' => $folders,
|
180
|
+
'current_folder_id' => $current_folder->id,
|
181
|
+
'tasks' => $tasks,
|
182
|
+
]);
|
183
|
+
}
|
184
|
+
|
185
|
+
/**
|
186
|
+
* GET /folders/{id}/tasks/create
|
187
|
+
*/
|
188
|
+
public function showCreateForm(int $id)
|
189
|
+
{
|
190
|
+
return view('tasks/create', [
|
191
|
+
'folder_id' => $id,
|
192
|
+
]);
|
193
|
+
}
|
194
|
+
|
195
|
+
public function create(int $id, CreateTask $request)
|
196
|
+
{
|
197
|
+
$current_folder = Folder::find($id);
|
198
|
+
|
199
|
+
$task = new Task();
|
200
|
+
$task->title = $request->title;
|
201
|
+
$task->due_date = $request->due_date;
|
202
|
+
|
203
|
+
$current_folder->tasks()->save($task);
|
204
|
+
|
205
|
+
return redirect()->route('tasks.index', [
|
206
|
+
'id' => $current_folder->id,
|
207
|
+
]);
|
208
|
+
}
|
209
|
+
|
210
|
+
/**
|
211
|
+
* GET /folders/{id}/tasks/{task_id}/edit
|
212
|
+
*/
|
213
|
+
public function showEditForm(int $id, int $task_id)
|
214
|
+
{
|
215
|
+
$task = Task::find($task_id);
|
216
|
+
|
217
|
+
return view('tasks/edit', [
|
218
|
+
'task' => $task,
|
219
|
+
]);
|
220
|
+
}
|
221
|
+
|
222
|
+
public function edit(int $id, int $task_id, EditTask $request)
|
223
|
+
{
|
224
|
+
// 1 過去に登録されている情報を取得
|
225
|
+
$task = Task::find($task_id);
|
226
|
+
|
227
|
+
// 2
|
228
|
+
$task->title = $request->title;
|
229
|
+
$task->status = $request->status;
|
230
|
+
$task->due_date = $request->due_date;
|
231
|
+
$task->save();
|
232
|
+
|
233
|
+
// 3
|
234
|
+
return redirect()->route('tasks.index', [
|
235
|
+
'id' => $task->folder_id,
|
236
|
+
]);
|
237
|
+
}
|
238
|
+
}
|
239
|
+
|
149
240
|
```
|
1
bladeの追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -14,6 +14,7 @@
|
|
14
14
|
・モデルファイル内の関数は自動で実行される
|
15
15
|
・コントローラーファイル内の関数はweb.phpで呼び出しされ初めて実行される
|
16
16
|
|
17
|
+
**models**
|
17
18
|
```php
|
18
19
|
<?php
|
19
20
|
|
@@ -82,4 +83,67 @@
|
|
82
83
|
use HasFactory;
|
83
84
|
}
|
84
85
|
|
86
|
+
```
|
87
|
+
|
88
|
+
**blade**
|
89
|
+
```php
|
90
|
+
@extends('layout')
|
91
|
+
|
92
|
+
@section('content')
|
93
|
+
<div class="container">
|
94
|
+
<div class="row">
|
95
|
+
<div class="col col-md-4">
|
96
|
+
<nav class="panel panel-default">
|
97
|
+
<div class="panel-heading">フォルダ</div>
|
98
|
+
<div class="panel-body">
|
99
|
+
<a href="{{ route('folders.create') }}" class="btn btn-default btn-block">
|
100
|
+
フォルダを追加する
|
101
|
+
</a>
|
102
|
+
</div>
|
103
|
+
<div class="list-group">
|
104
|
+
@foreach($folders as $folder)
|
105
|
+
<a href="{{ route('tasks.index', ['id' => $folder->id]) }}" class="list-group-item {{ $current_folder_id === $folder->id ? 'active' : '' }}">
|
106
|
+
{{ $folder->title }}
|
107
|
+
</a>
|
108
|
+
@endforeach
|
109
|
+
</div>
|
110
|
+
</nav>
|
111
|
+
</div>
|
112
|
+
<div class="column col-md-8">
|
113
|
+
<div class="panel panel-default">
|
114
|
+
<div class="panel-heading">タスク</div>
|
115
|
+
<div class="panel-body">
|
116
|
+
<div class="text-right">
|
117
|
+
<a href="{{ route('tasks.create', ['id' => $current_folder_id]) }}" class="btn btn-default btn-block">
|
118
|
+
タスクを追加する
|
119
|
+
</a>
|
120
|
+
</div>
|
121
|
+
</div>
|
122
|
+
<table class="table">
|
123
|
+
<thead>
|
124
|
+
<tr>
|
125
|
+
<th>タイトル</th>
|
126
|
+
<th>状態</th>
|
127
|
+
<th>期限</th>
|
128
|
+
<th></th>
|
129
|
+
</tr>
|
130
|
+
</thead>
|
131
|
+
<tbody>
|
132
|
+
@foreach($tasks as $task)
|
133
|
+
<tr>
|
134
|
+
<td>{{ $task->title }}</td>
|
135
|
+
<td>
|
136
|
+
<span class="label {{ $task->status_class }}">{{ $task->status_label }}</span>
|
137
|
+
</td>
|
138
|
+
<td>{{ $task->formatted_due_date }}</td>
|
139
|
+
<td><a href="{{ route('tasks.edit', ['id' => $task->folder_id, 'task_id' => $task->id]) }}">編集</a></td>
|
140
|
+
</tr>
|
141
|
+
@endforeach
|
142
|
+
</tbody>
|
143
|
+
</table>
|
144
|
+
</div>
|
145
|
+
</div>
|
146
|
+
</div>
|
147
|
+
</div>
|
148
|
+
@endsection
|
85
149
|
```
|