Zend Framework, özel adını ayarlamak nasıl Zend_Form_Element?

1 Cevap php

I have form, where some fields are looks like rows, so I can add/delete them using JS. For example:

ID = 1 (varolan satır) ile tarla

<input id="id[1]" type="text" name="id[1]" value="1" />
<input id="name[1]" type="text" name="name[1]" value="100" />

ID = 2 (varolan satır) ile tarla

<input id="name[2]" type="text" name="name[2]" value="200" />
<input id="name[2]" type="text" name="name[2]" value="200" />

Varsayılan olarak oluşturulan yeni satır (varolan satırların bir daha satır eklemek izin)

<input id="id[n0]" type="text" name="id[n0]" value="" />
<input id="name[n0]" type="text" name="name[n0]" value="" />

JS tarafından oluşturulan yeni satır

<input id="id[n1]" type="text" name="id[n1]" value="" />
<input id="name[n1]" type="text" name="name[n1]" value="" />

Biz formu devam edecek daha Yani, güncellemek ve ne (- yeni, dizin numarası ise - peyda eleman index "n" ile başlarsa) eklemek için ne satırlar bilecek.

Ben alt formlar çalıştım ... ama ben her alan için alt form oluşturmak için var? Ben aşağıdaki kodu kullanırsanız:

$subForm = new Zend_Form_SubForm();
$subForm->addElement('Text', 'n0');
$this->addSubForm($subForm, 'pid');       
$subForm = new Zend_Form_SubForm();
$subForm->addElement('Text', 'n0');
$this->addSubForm($subForm, 'name');

Bunun için en iyi yolu nedir?

1) alt formlar kullan?

2) name[nX] gibi isimleri kullanmak için Zend / Form / Dekoratör / ViewHelper.php uzatın?

3) Diğer çözümler?

Teşekkürler.

1 Cevap

Alternatif yerde tüm alanları ile tek bir alt form oluşturmak ve daha sonra ana form bu alt formların bir dizi eklemektir. Bu, Bunun için kullanabileceğiniz kodu:

        foreach ($value as $id => $row) {

                $subForm = clone $origSubForm;

                $name = 'multi[' . $id . ']';
                $subForm->setElementsBelongTo($name);
                $subForm->setName($name);
                $subForm->populate($row);

                $subForms[$id] = $subForm;
        }

Bir dizi elemanı bu formları koyun (adındaki bu örnekte multi). Bunun yerine bireysel $id[] Eğer içeren bir dizi alır değerleri [0 => ['id' => .., ], 'n0' => ['id' => ...]] içeren diziler