我正在使用Symfony 1.4創建項目,我需要根據來自數據庫的問題集類型創建動態窗體。我在我的項目的其餘部分中使用了Symfony窗體,但在這種情況下,使用symfony窗體似乎很難,因爲我需要動態窗體。 在symfony項目中使用普通的HTML格式是否安全?或者建議使用Symfony格式。所以需要你的幫助。Symfony窗體或正常的HTML表單
0
A
回答
2
您可以使用html表單,但它會繞過symfony的表單驗證系統。
您仍然可以通過創建和添加輸入窗口小部件到當前窗體或動作中的新窗體來構建動態窗體。然後,您可以在模板中回顯表單,並且動態生成的字段也將成爲表單的一部分。
如果你開始在lib /表格一MyForm.class.php,確保添加:
$this->validatorSchema->setOption('allow_extra_fields', true);
否則,您將自動獲得驗證錯誤。如果你想字段添加到表單中的動作,你會做這樣的事情:
$this->form = new MyForm();
$widgetSchema = $this->form->getWidgetSchema();
$widgetSchema['add_field'] = new sfWidgetFormInputText();
當您迴應表單中的「add_field」輸入將被添加到它。
+0
我會試試這個,因爲我想在運行時添加HTML元素,並且不支持Symfony表單驗證系統。 – 2010-10-01 06:35:04
1
這將有助於獲得更多關於您正在做的事情的信息,但這裏有一種方式可以在Symfony中動態表示。此代碼爲動態基礎上,一個問題的「類型」的調查創建控件和驗證:
class SurveyAnswerForm extends BaseSurveyAnswerForm
{
public function configure()
{
$question = $this->object->Question;
$method = sprintf('createWidgetAndValidatorFor%sInputType', $question->type);
$this->$method($question);
$this->getWidget('value')->setOption('label', $question->question);
$this->getValidator('value')->setOption('required', $question->required);
}
protected function createWidgetAndValidatorForTextFieldInputType(Question $question)
{
$this->setWidget('value', new sfWidgetFormInputText());
$this->setValidator('value', new sfValidatorString());
}
protected function createWidgetAndValidatorForTextAreaInputType(Question $question)
{
$this->setWidget('value', new wfWidgetFormTextareaAutosize());
$this->setValidator('value', new sfValidatorString());
}
//etc. for as many types as you require
}
注意:當這個答案是我的一個項目的代碼,它在很大程度上受到this answer在上SymfonyExperts影響。
相關問題
- 1. 窗體中的html表單
- 2. Symfony 1.4窗體小部件身份證代一代不正常
- 3. Symfony的窗體Invalidad日期
- 4. Mongoose $ HTML表單不能正常工作
- 5. 在Symfony窗體類中篩選表單輸入
- 6. symfony - 在窗體中更改表單值callbackvalidator
- 7. Symfony表單集合與單數實體
- 8. Symfony窗體錯誤呈現
- 9. 創建quizz窗體symfony
- 10. Symfony 1.4窗體小部件
- 11. symfony:窗體和主鍵
- 12. python html表單庫支持窗體中的窗體(窗體作爲一個字段)?
- 13. Symfony窗體和實體構造函數
- 14. 滑動窗體無法正常工作?
- 15. 窗體onsubmit不能正常工作
- 16. Django窗體無法正常工作
- 17. 寫入衝突非常簡單Access窗體與子窗體
- 18. Symfony的動態添加或刪除子窗體
- 19. 單擊幫助按鈕後保持窗體狀態正常
- 20. Symfony編輯窗體使用彈出窗口在列表頁面
- 21. Symfony表單驗證實體類型
- 22. Symfony表單設計,實體設計
- 23. 覆蓋子窗體symfony中的父窗體標籤
- 24. asp.net web窗體單行表
- 25. Symfony單元測試窗體,使用jquery datepicker的形式
- 26. 從其他控制器的Symfony窗體
- 27. 使用Symfony窗體組件處理包含多個複選框的表單
- 28. 像Zend_Form_Html或ExtJS窗體爲JQuery的表單生成器
- 29. CFWheels窗體助手vs HTML窗體
- 30. 彈簧窗體與html窗體
你能提供更多關於你想要做什麼的信息嗎? 「動態」形式 - 它們是如何動態的?無論您想要做什麼,Symfony幾乎都可以做到。 – 2010-09-30 21:02:47
@jeremy,對不起,我coudnt解釋非常..動態形式我的意思是...形式將在運行時創建取決於數據庫..就像它有n個選擇...和元素的類型(即HTML元素)將取決於問題類型(如果單選擇然後選擇元素,如果多個然後複選框..),我希望它是明確的.. – 2010-10-01 06:29:22
以前我使用經典的PHP,做同樣..在那個時候我通過PHP代碼創建了這些問題集表單...並使用了JavaScript .. – 2010-10-01 06:30:56