16-3
儲存並計分
- 修改路由
\專案\routes\web.php
,儲存部份用test的控制器TestController
來處理:
Route::post('/test', 'TestController@store')->name('test.store');
- 先建立考試Test的控制器
php artisan make:controller TestController --resource
- 接著編輯控制器
\專案\app\Http\Controllers\TestController.php
,修改 store
方法,儲存後轉向到考試結果頁面。
public function store(Request $request)
{
$content = collect($request->ans)->toJson();
$score = 0;
foreach ($request->ans as $topic_id => $ans) {
$topic = Topic::find($topic_id);
$score += ($topic->ans == $ans) ? 20 : 0;
}
$test = Test::create([
'content' => $content,
'user_id' => $request->user_id,
'exam_id' => $request->exam_id,
'score' => $score,
]);
return redirect()->route('test.show', $test->id);
}
- 在上方告知要加上
\App\Test
及App\Topic
模型
use App\Test;
use App\Topic;
- 路由先定義個
test.show
的路由,避免錯誤。
Route::pattern('exam', '[0-9]+');
Route::pattern('topic', '[0-9]+');
Route::pattern('test', '[0-9]+');
//略
Route::get('/test/{test}', 'TestController@show')->name('test.show');
- 接著可以試試看是否能儲存測驗結果囉!(請暫時先到資料庫去看結果)