Вы на самом деле не должны делать такого рода вещи (я имею в виду писать текстовые формы), если вы используете Zend Framework.Вы должны использовать встроенные методы.
Прежде всего, включите форму и создайте форму.Затем используйте этот очень простой для понимания код.Обратите внимание, что я не пробовал, если он работает на 100%, но это на 100% логика, которая вам нужна.
Класс формы
class Application_Form_YourFormName extends Zend_Form
{
public function init()
{
$this->setMethod(self::METHOD_POST);
$this->setAction('THE-URL-WHERE-THIS-FORM-IS-MANAGED');
$Element = new Zend_Form_Element_Text('state');
$Element->setLabel('State:');
$Element->addValidators(array(/*DON'T KNOW WHAT KIND OF VALIDATION YOU NEED*/));
$Element->addFilters(array(new Zend_Filter_StringTrim(),
new Zend_Filter_HtmlEntities(array('quotestyle' => ENT_QUOTES))));
$Element->setRequired();
$this->addElement($Element);
unset($Element);
$this->addElement('reset', 'Reset');
$this->addElement('submit', 'Submit');
}
public function stateNotPresent()
{
$this->removeElement('state');
// Note that getStates() is an hypotetical method of an
// hypotetical Application_Model_State where you can retrieve an
// array containing the list of the state you have. This array is
// needed to fill the Select list.
$States = Application_Model_State::getStates();
$Element = new Zend_Form_Element_Select('statelist');
$Element->setLabel('State:');
$Element->setMultiOptions($States);
$Element->addValidator(new Zend_Validate_InArray($States));
$Element->setRequired();
$Element->setOrder($this->count() - 2);
$this->addElement($Element);
unset($Element);
}
}
Класс контроллера
public function name-of-the-action-you-needAction()
{
$Form = new Application_Form_YourFormName();
if ($this->_request->isPost())
{
if ($Form->isValid($this->_request->getPost()))
{
// Do things. A good text has been entered
}
else
{
$Form->stateNotPresent();
if ($Form->isValid($this->_request->getPost()))
{
// Do things. A good selection has been entered.
}
else
{
// echo the edited form (the one with the dropdown list)
$this->view->Form = $Form;
}
}
}
// The first time the page is requested.
// The page with the text box will be printed
else
$this->view->Form = $Form;
}
VIEW-OF-ACTION.phtml
if ($this->Form != null)
echo $this->Form;
Я надеюсь, вы оцените мои усилия, чтобы вы поняли.