Parametrelere göre Zend Form elemanları üzerinde dekoratörler Çıkarma

3 Cevap php

Zend otomatik üretti form elemanları etrafında etiketleri ekler. Nasıl addElement işlevi parametrelerinde olarak bu etiketleri kaldırabilirsiniz.

Ancak elemanı sonra tüm render değil, disableLoadDefaultDecorators bayrağını değiştirmeyi denedim.

For example: $searchForm->addElement('text', 'searchText', array('class'=>'onClickClear', 'disableLoadDefaultDecorators' => true));

3 Cevap

Yüklemek dekoratörler bir dizi geçerek createElement / addElement varsayılan dekoratörler kılabilirsiniz.

"ViewHelper" dekoratör genellikle doğrulayıcılarıyla ile ilgili sorunlar için formu elemanın kendisi, "Hatalar" işler ve form elemanı için "Etiket" genellikle kullanışlıdır.

$searchForm->addElement('text', 'searchText', array(
  'class'=>'onClickClear', 
  'decorators'=>Array(
    'ViewHelper',
    'Error', 
    array('Label', array('tag' => 'div')),
   ),
));

Başka bir yol sağ sonraki tüm elemanlar için varsayılan dekoratörler ayarlar form, başlatmasından sonra setElementDecorators () çağırmaktır. Ben çok basit (tek veya iki alan formları) aşağıdaki kodu kullanabilirsiniz ben sadece bir satır görüntülenir ve bu geniş doğrulama gerekmez istiyorum:

$form = new Zend_Form();
$form->setElementDecorators( array( 'ViewHelper', 'Label' ) );

Ben bu HtmlTag dekoratör kaldırmak için çalışacağını düşünüyorum:

$element = $searchForm->createElement('text', 'searchText', array('class'=>'onClickClear'));
$element->removeDecorator('HtmlTag');
$searchForm->addElement($element);