Условно задайте множественные опции элемента выбора формы Zend, основываясь на текущем значении - PullRequest
0 голосов
/ 22 марта 2011

В настоящее время я пытаюсь создать веб-приложение в Zend Framework.

Но я не могу понять, как управлять статусом в моей системе

Например, у меня есть следующий статус для обработки моей котировки в системе

Awaiting for Confirmation
Asssigned
In Progress
Completed
Mark As Spam

Я сохранил эти значения в таблице ProviderQuoteStatus и создал функцию ProviderQuoteStatus () в классе zend_db и использую эту функцию для генерации значений состояния в раскрывающемся списке формы 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
In Progress
Completed

Как удалить значения «Ожидание подтверждения» и «Пометить как спам» в раскрывающемся списке формы Zend?

Кроме того, где я должен хранить всю эту бизнес-логику (например, если в кавычке только в Assigned Stage могут быть опции Assigned, In Progress и т. Д.)? В классе Model DB?

Заранее большое спасибо: D

1 Ответ

0 голосов
/ 22 марта 2011

Вы можете заполнить элемент select всеми возможными опциями в $ form-init(), как вы делаете. Но затем измените элемент в течение $form->setDefaults($defaults), после чего вы узнаете текущее значение элемента и определите, какие параметры больше не подходят: если значение элемента «Назначено», то удалите «Ожидание» и «Спам» варианты.

...