2015-12-15 73 views
1

我正在創建一個類似於online exam system的項目,其中教師創建問題和回答類型,如inputradio button等。我將這些記錄保存在數據庫和用戶登錄中,並相應地查看錶單適當的輸入類型。根據數據庫記錄創建yii2表單域

如何在用戶表單上創建這些字段?我的數據庫是像下面

Questions  information 
id    id 
teacher_id  user_id 
subject_id  question_id 
question  answer 
input_type 
is_required 

,所以我堅持,我怎麼能創造對用戶視圖文件這些領域的問題很簡單呢?我應該只創建information模型的一個實例並使用數組打印字段?或者我應該像下面

foreach($modelInformation as $i=>$modelInformation){ 

    echo $form->field($modelInformation, "[{$i}]answer")->textInput(); 
} 

像這樣的東西創建information模型的不同實例嗎?或者有一些簡單的方法來做到這一點?我很困惑,因爲我不確定如果我以這種方式進行驗證,我該如何進行驗證?因爲一些問題可以是可選的,而其他問題則必須回答。如果有任何示例項目可用於類似的情況,而不是指向我,我會處理剩下的工作。謝謝

回答

0

我認爲有很多方法可以創建該項目,這取決於客戶需要什麼或開發人員想要實現什麼。 我可以建議按照以下方式你可以試試這個:

  1. CMS模型:儘量讓管理面板中的所有問題將會顯示來自數據庫 ,您可以通過一個選擇的問題1定義的問題應該是客觀的,描述性等,並將相應地在視圖形式上產生問題。
  2. 如果您的問題每次都會修正,而不是創建一個視圖頁面,並根據您的選擇定義哪個問題應該是這樣的。但是如果您更改問題,每次都必須更改。 所以我建議嘗試CMS模式,它會自動化你的項目。
1

可以使用html幫手來做到這一點。假設您已經定義了question與信息模型之間的關係,可以創建一個活動字段,並將字段類型作爲文本參數傳遞,如下所示。

echo Html::activeInput($modelInformation->question->input_type, $modelInformation, 'answer'); 

進行驗證,你可能需要創建一個standalone validator和使用switch語句取決於$model->question->input_type

值來更改驗證