teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

TaskControllerファイルの追記

2020/09/25 01:51

投稿

ChickBeans
ChickBeans

スコア1

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の追加

2020/09/25 01:51

投稿

ChickBeans
ChickBeans

スコア1

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
  ```