:::
12-3 新增題目編輯表單
- 我們打算在某一個測驗頁面(
exam.show)列出該測驗標題,及所有題目和選項解答,同時,又可以在該頁面放個表單以方便建立新題目。這樣該怎麼做?首先,先來放個表單。 - 目前執行的路由是:
Route::get('/exam/{exam}', 'ExamController@show')->name('exam.show'); -
也就是執行的控制器是
ExamController@show,所以,我們開啟/專案/app/Http/Controllers/ExamController.php,找出裡面的show()來看看其前端是送到哪裡去!我們好在該樣板產生一個題目用的表單。public function show(Exam $exam) { return view('exam.show', ['exam' => $exam]); } -
由
view()可以得知,會套用/專案/resources/views/exam/show.blade.php,所以,我們開啟它,然後在裡面加入表單的語法:@can('建立測驗') {{ bs()->openForm('post', '/topic') }} {{ bs()->formGroup() ->label('題目內容', false, 'text-sm-right') ->control(bs()->textarea('topic')->placeholder('請輸入題目內容')) ->showAsRow() }} {{ bs()->formGroup() ->label('選項1', false, 'text-sm-right') ->control(bs()->text('opt1')->placeholder('輸入選項1')) ->showAsRow() }} {{ bs()->formGroup() ->label('選項2', false, 'text-sm-right') ->control(bs()->text('opt2')->placeholder('輸入選項2')) ->showAsRow() }} {{ bs()->formGroup() ->label('選項3', false, 'text-sm-right') ->control(bs()->text('opt3')->placeholder('輸入選項3')) ->showAsRow() }} {{ bs()->formGroup() ->label('選項4', false, 'text-sm-right') ->control(bs()->text('opt4')->placeholder('輸入選項4')) ->showAsRow() }} {{ bs()->formGroup() ->label('正確解答', false, 'text-sm-right') ->control(bs()->select('ans',[1=>1, 2=>2, 3=>3, 4=>4])->placeholder('請設定正確解答')) ->showAsRow() }} {{ bs()->hidden('exam_id', $exam->id) }} {{ bs()->formGroup() ->label('') ->control(bs()->submit('儲存')) ->showAsRow() }} {{ bs()->closeForm() }} @endcan -
一樣要用
@can()來判斷權限,免得其他人來胡亂新增題目 -
記得設定
exam_id隱藏欄位,並利用$exam->id來取得目前測驗編號,如此,才知道此題目是屬於那一個測驗的。

12-2 建立並執行題目的Model 及 migrate 文件 
