dynamicaly Zend_Form için textboxes ekleme

1 Cevap php

Bu cevap bir hızlı soru olduğunu umuyoruz. I Zend_Form, I Zend_Dojo_Form_Element_Textboxs dinamik olarak bu forma eklemek için bir dizi kullanarak bir form geliştiriyorum.

Veritabanında sıralarındaki ilave edilir, örneğin,

$count = 0;
			//we now loop through the skill types and add them to the form.
			foreach($skillResult as $skill){

				$skillTextBox = new Zend_Dojo_Form_Element_ValidationTextBox('skill-'.$count,
					array('trim' => true,
						'NotEmpty' => true,
						'invalidMessage' => 'This can not be blank'
					)
				);
				$skillTextBox->addValidator('NotEmpty')
					->removeDecorator('DtDdWrapper')
					->removeDecorator('HtmlTag')
					->removeDecorator('Label');

				//add the element to the form.
				$myForm->addElement($skillTextBox);

				$count++;

			}

Form, daha sonra ben ancak ayıklamak gerekir ki, bir görünüm komut görüntülenir. Ben formda var kaç 'ustalık' textboxes bilmiyorum ben ben nasıl döngü aracılığıyla emin değilim ve görünümü komut dosyası ekleyebilirsiniz. Ben normalde şu şekilde viewScript ekleyerek bakmak istiyorum:

<?php foreach($this->element->getElement('skill') as skill) :?>
  <tr>
   <td><?php echo $skill;?></td>
  </tr>
<?php endforeach;?>

I Warning: Invalid argument supplied for foreach() bir hata mesajı alıyorum Ancak

Ben geriye doğru bir şekilde bu konuda gidiş ve bu forma benim yaklaşımı değiştirmek veya ben burada somthing eksik muyum?

Şimdiden teşekkürler ...

1 Cevap

Bir denetleyicisinin eylem fonksiyonu form oluşturarak iseniz, eklediğiniz kaç beceri metin kutuları sizin bakış komut anlatmak için böyle bir şey yapabilirsiniz ..

Denetleyici:

$this->view->skillTextBoxCount = $count;

Görünümünde:

// the view is now "this"
$skillCount = $this-skillTextBoxCount;

Siz de böyle bir şey yapabilirsiniz:

$elements = $form->getElements();
foreach($elements as $element) {
   if (strpos($element->getName(), 'skill-') === 0) { // must use === here
      // do something with your element
   }
}