addmultioption array problem in Zend

2019-02-21 02:22发布

问题:

Am trying to add options in my Zend_Form_Element_Select element

$monthvalues = new Zend_Form_Element_Select('month_values');
$table = new Model_DbTable_Options();
$monthvalues->addMultiOptions($table->Months())

In my Model_DbTable_Options model I have

public function Months()
    {
        $array = array(
        '01' => 'Jan',
        '02' => 'Feb',
        '03' => 'Mar',
        '04' => 'Apr',
        '05' => 'May',
        '06' => 'Jun',
        '07' => 'Jul',
        '08' => 'Aug',
        '09' => 'Sep',
        '10' => 'Oct',
        '11' => 'Nov',
        '12' => 'Dec',
        );

        return $array;
    }

It aint giving me the desired outcome. Whats missing?

回答1:

Create Array like this

$myArray = array( 'NULL' => 'Select Month',
                     '1' => 'Jan',
                     '2' => 'Feb',
                     '3' => 'Mar',
                     '4' => 'Apr',
                     '5' => 'May',
                     '6' => 'Jun',
                     '7' => 'Jul',
                     '8' => 'Aug',
                     '9' => 'Sep',
                    '10' => 'Oct',
                    '11' => 'Nov',
                    '12' => 'Dec'
                 );

Create element like this:

$selectElement = $this->CreateElement('select', 'months');
$selectElement->setLabel('Label');
$selectElement->addMultiOptions( $myArray );


回答2:

Be careful! If you add a NULL value like this to your Zend Form your $model that you will save will have the value string(4) "NULL"

//in the form

$task->addMultiOption('NULL','');

//as it appears in html

select id="fk_id_task_task" name="fk_id_task_task" option label="" value="NULL" /option

//model from form values

$values = $form->getValues(); $model->fromArray($values, true);

//dump the $model and you end up with string(4) "NULL"

$model->fk_id_task_task = string(4) "NULL"