2011-03-22 69 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)期间修改元素,此时您将知道元素的当前值,并确定哪些选项不再适合:如果元素值为“已分配”,请删除“等待”和“垃圾邮件”选项。