2011-05-24 71 views
0

我有一個數據庫表和一個鏈接表「網站」是在第一個和第二個定義的數量從一個到多個值可以添加指向「網站」。用戶可以在鏈接數據的窗體中打開「站點」字段,然後在字段中顯示,以便用戶可以編輯這些值。在Zend框架中使用Zend_Form的表單上的字段數量變化

例如「Site One」有一個相關領域。

「Site Two」有三個相關的字段。

「Site Three」有兩個相關字段。 等

如果我是手動啓動它,我只會讀取數據並創建額外的字段,但我建立它與Zend_Form似乎想知道的字段數提前。我正在模型目錄中使用腳本目錄中的_form_xxx.phtml(部分?)模型。

我對Zend很陌生,感覺我的方式有點太過於Zend_Form中有這樣做的方式,因爲我似乎必須重寫php和phtml否則呢?

是子窗體Zend_Form_SubForm的一種方式嗎?

由於Zend是靈活的,我假設在最壞的情況下我可以用普通的香草方式編寫組件,但是我想在框架中使用這些工具(如果可能的話)。

回答

0

是什麼讓你認爲Zend_Form應該是靜態的?如果您認爲合適,可以在運行時動態創建表單中的字段。只需在表單類的構造函數中添加動態表單元素的邏輯(它擴展了Zend_Form)。

即。

class YourSplendidForm extends Zend_Form 
{ 
    public function __construct($options = null, $yourParams) 
    { 
     parent::__construct($options); 

     $this->setName('your_form_name'); 
     $this->setAction('/your/form/action/'); 

     // Add your fields here using addElement - or create a subform and add fields to that one and use addSubForm to add the subform 


    } 
} 

然後簡單地傳遞形式的實例到您的視圖(從控制器),並根據需要對其進行處理(通過簡單的<?php echo $this->form; ?>或定製的渲染,你認爲合適。