:::

12-3 新增題目編輯表單

  1. 我們打算在某一個測驗頁面(exam.show)列出該測驗標題,及所有題目和選項解答,同時,又可以在該頁面放個表單以方便建立新題目。這樣該怎麼做?首先,先來放個表單。
  2. 目前執行的路由是:
    Route::get('/exam/{exam}', 'ExamController@show')->name('exam.show');
  3. 也就是執行的控制器是ExamController@show,所以,我們開啟/專案/app/Http/Controllers/ExamController.php,找出裡面的show()來看看其前端是送到哪裡去!我們好在該樣板產生一個題目用的表單。

    public function show(Exam $exam)
    {
        return view('exam.show', ['exam' => $exam]);
    }
  4. 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
  5. 一樣要用@can()來判斷權限,免得其他人來胡亂新增題目

  6. 記得設定exam_id隱藏欄位,並利用$exam->id來取得目前測驗編號,如此,才知道此題目是屬於那一個測驗的。

到GitHub觀看此單元程式異動


:::

書籍目錄

展開 | 闔起

https%3A%2F%2Fcampus-xoops.tn.edu.tw%2Fmodules%2Ftad_book3%2Fpage.php%3Ftbdsn%3D1176%26tbsn%3D37

計數器

今天: 616616616
昨天: 2027202720272027
總計: 7971657797165779716577971657797165779716577971657