如何填充多数组输入字段的zend表单数据

时间:2014-07-01 13:39:43

标签: zend-framework zend-form-sub-form

您好我在zend

中有以下表格
<?php
/**
 * Admin/modules/admin/forms/TransportRoute.php
 * @uses TransportRoute Admission Form
 */

class Admin_Form_TransportRoute extends Zend_Form
{
    public function init()
    {
        $this->setMethod('post');

        $stopageDetailsForm = new Zend_Form_SubForm();
        $stopageDetailsForm->setElementsBelongTo('transport_route_stopage');

        $sd_stopage = $this->CreateElement('text','stopage')
                                ->setAttribs(array('placeholder'=>'Stopage Name', 'mendatory'=>'true'))
                                ->setRequired(true)
                                ->addFilter(new Zend_Filter_StringTrim())
                                ->setDecorators(array( array('ViewHelper') ))
                                ->setIsArray(true)
                                ->addValidators(array(
                                        array('NotEmpty', true, array('messages' => 'Please enter Stopage Name')),
                                        array('stringLength',true,array(1, 6, 'messages'=> 'Stopage Name must be 2 to 40 characters long.'))
        ));

        $sd_stopage_fee = $this->CreateElement('text','stopage_fee')
                                ->setAttribs(array('placeholder'=>'Route Fee', 'mendatory'=>'true'))
                                ->setRequired(true)
                                ->addFilter(new Zend_Filter_StringTrim())
                                ->setDecorators(array( array('ViewHelper') ))
                                ->setIsArray(true)
                                ->addValidators(array(
                                        array('NotEmpty', true, array('messages' => 'Please enter Stopage Fee')),
        ));
        $stopageDetailsForm->addElements ( array (
                $sd_stopage,
                $sd_stopage_fee,
        ) );
        $this->addSubForm($stopageDetailsForm, 'transport_route_stopage');

               //all sub form end here
        $id = $this->CreateElement('hidden','id')
                            ->setDecorators(array( array('ViewHelper') ));
        $this->addElement($id);
        $this->setDecorators(
                array(
                        'PrepareElements',
                        array('viewScript'))
        );
    }
}

当我渲染此表单时,这绝对正常:

<div class="row-fluid stopage_block">
            <div class="span5">
                <?php echo $stopageDetail->stopage;?>
            </div>
            <div class="span4">
                <?php echo $stopageDetail->stopage_fee;?>
            </div>
</div>

但是在添加记录时,我会创建类的div的克隆&#34; stopage_block&#34;并将它们保存在数据库中。现在我所关心的是如何通过使用通过div的克隆插入的foreach循环来填充所有值。

我有以下数组

array('stopage' => 'India','stopage_fee' => 5000);
array('stopage' => 'US','stopage_fee' => 50000);
array('stopage' => 'Nepal','stopage_fee' => 2000);

如何使用任何循环或其他方法在当前表单中填充这些值。

感谢。

1 个答案:

答案 0 :(得分:-1)

getSubForms中有Zend_Form方法,您可以使用它。

另外,我建议您查看以下文章http://framework.zend.com/manual/1.11/en/zend.form.advanced.html。我想这正是你要找的。