2011-03-22 58 views
0

目前我正在嘗試在Zend框架中構建一個Web應用程序。有條件地設置Zend Form根據當前值選擇元素多選項

但我無法弄清楚如何在我的系統

如管理狀態我有我的報價系統中的處理

Awaiting for Confirmation 
Asssigned 
In Progress 
Completed 
Mark As Spam 

我存儲在一個名爲表中的這些值以下的狀態ProviderQuoteStatus和我在zend_db類中創建了一個名爲ProviderQuoteStatus()的函數,並使用該函數在zend表單下拉框中生成狀態值。

$select = $this->select()->from("providerQuoteStatus", 
      array('key' => 'providerQuoteStatusId', 
       'value' => 'providerQuoteStatusName')); 

    $result = $this->fetchAll($select); 

return $result->toArray(); 

這裏是我的Zend形式的代碼

$serviceType = new Application_Model_DbTable_ProviderQuoteStatus(); 

$serviceTypeValues = $serviceType->getProviderQuoteStatusFormValues(); 

$dropDownElement = new Zend_Form_Element_Select('providerQuoteStatus'); 

$dropDownElement->addMultiOptions($serviceTypeValues); 

一切工作正常,直到這個階段。如果Asssigned階段的報價我只是想提供者選擇這些下列選項

Asssigned 
In Progress 
Completed 

如何刪除在Zend的形式下拉框「等待確認」和「標記爲垃圾郵件的價值觀?

此外,我應該在哪裏存儲所有這些業務邏輯(例如,如果分配階段的報價只能分配,正在進行選項等)?在Model DB類中?

非常感謝提前:d

回答

0

你可以填充在$ form-init()所有可能的選項中選擇元素,因爲你在做什麼。但是在$form->setDefaults($defaults)期間修改元素,此時您將知道元素的當前值,並確定哪些選項不再適合:如果元素值爲「已分配」,請刪除「等待」和「垃圾郵件」選項。