In a form, I have this:
$status = new Zend_Form_Element_Select('status',
array('multiOptions' =>
array(1 => 'Draft')));
$status->addValidator('NotEmpty')
->setRequired(true)
->setLabel('Status')
->addDecorator('Label', array('tag' => 'div', 'id' =>
'status-label'))
->addDecorator('HtmlTag', array('tag' => 'div', 'id' =>
'status-container'));
$this->addElement($status);
In the controller, I have this:
$articleForm->getElement('status')->setMultiOptions(array(1 =>
'Draft', 3 => 'Pending', 2 => 'Published'));
if ($this->_request->isPost()) {
BC_Log::debug('status = "' .
$articleForm->getElement('status')->getValue() . '"');
BC_Log::debug('status = "' .
$articleForm->getValue('status') . '"');
if ($articleForm->isValid($_POST)) {
$values = $articleForm->getValues();
if ($values['status'] == 2 && $article->status <> 2) {
$firstPublish = true; }
$article = $mdlArticle->updateArticle($values);
The setMultiOptions() works.
The $articleForm->getValues() after the isValid works.
$values['status'] is properly set, and the conditional works, etc.
I'm trying to *add* some logic in between the isPost() and the
isValid($_POST), which is why I've stuck debug statements there. Both
attempts return nothing. (Actually, they return: status = "") I've tried
swapping out 'status' for other elements, like 'title', and that also gives
me nothing. It appears as if getValue() *always* returns nothing.
Do I have to do something else before getValue() will work? Do I have to get
*all* the values, when I only need to check a single one?
-- Phillip Winn -- http://blogcritics.org/ -- 214/402-9466 --