Zend Form: Bir metin alanının sağında bir bağlantı ekle

3 Cevap php

Ben should bunu yapmak mümkün olduğunu biliyoruz, ama ne, ben mi değil get it söyleyebiliriz. Gözlerim kızarmış kadar bile rtfm'ed ettik. Ben, örneklerle iyi sorular bu tür genellikle üretmek değil zerdüştlerin docs vermesi derin açıklamalar, ya da tipik "kullanımı dekoratörler" yanıtını öğrenmek. Ne yapmam gerekiyor bu gibi biçimlendirme:

<dt>
    <label for="name">Name</label>
</dt>
<dd>
    <input type="text" name="name" id="name" value="">
    <a href="#">My Link</a>
</dd>

Giriş sonra ekstra LINK dışında onun tüm vanilya,. Evet, onun hemen yanındaki bağlantıya gg, ve ben ne alamıyorum ne içeride.

İşte yukarıdaki HTML oluşturmak için kullanılan (biraz değiştirilmiş) koddur

$name = new Zend_Form_Element_Text( 'name' );
$name->setLabel( 'Name' );    	
$this->addElements( $name );
$this->addDisplayGroup( array( 'name' ), 'people');

Herhangi bir örnek kod veya daha iyi açıklama bu çaylak çok çok mutlu olurdu.

Şerefe!

3 Cevap

Bu konuda posta listesinde this thread benim cevap ve benim blog post bakın. Bu temelde Aaron açıklanan aynı süreç.

Ayrıca bağlantıyı (test değil) tutmak için açıklama özelliğini kullanarak, dekoratör yol gidebilir:

<?php
$foo = new Zend_Form_Element_Text('name');
$foo->setLabel('Name')
    ->setDescription('<a href="#">Link</a>')
    ->setDecorators(array(
        'ViewHelper',
        array('Description', array('escape' => false, 'tag' => false)),
        array('HtmlTag', array('tag' => 'dd')),
        array('Label', array('tag' => 'dt')),
        'Errors',
      ));
$form->addElement($foo);

'tag'=>false Description dekoratör iş olsaydı ben emin değilim, ama denemeye değer. Üzgünüm artık bu test edemez, benim geliştirme kutu anda bozuldu. Başarısız olursa, bu iki bağlantıları anlatılan manuel dekoratör oluşturma yöntemini deneyin.

Ben Bir Görünüm Script yoluyla dekoratör tam kontrolü için arıyorsanız düşünüyorum:

Zend Framework Manual

Temel olarak, komut dosyası yolu elemanın viewScript özelliğini ayarlayın ve daha sonra göndermek istediğiniz istediğiniz herhangi bir ek bilgiyi, belki linkHref veya bina konum bağlantı başlığı geçmek istiyorum.

$name = new Zend_Form_Element_Text( 'name' );
$name->setLabel( 'Name' );   
$name->viewScript = 'path/to/viewScript.phtml';
$name->decorators = array('ViewScript', array('linkHref' => '#',
                                              'linkTitle' => 'My Link');
$this->addElements( $name );
$this->addDisplayGroup( array( 'name' ), 'people');

: Sonra viewScript tüm Yardımcılar bir Zend_Form_Element bir örneğini içinde nasıl emin değilim, ama biraz böyle, bu gibi görünecektir

<dt><?= $this->formLabel($this->element->getName(),
                     $this->element->getLabel()) ?></dt>
<dd><?= $this->{$this->element->helper}(
                     $this->element->getName(),
                     $this->element->getValue(),
                     $this->element->getAttribs()
                ) ?>
<a href="<?= $this->linkHref; ?>"><?= $this->linkTitle; ?></a>
<?= $this->formErrors($this->element->getMessages()) ?>

</dd>

Hala oldukça KURU olurken bazen daha iyi bir viewScript o bunu yapıyor o, size elemanın% 100 kontrol sağlar çünkü.

Eğer bu onay kutularını üzerinde çalışmıyor bulursanız (bu bir çerçeve sahip noktasını inkâr görünüyor) gerçekten basit bir şey yapmak için baş-Kıyımı'nın saat sonra, Harun'un yazılan bazı desteği eklemek için, o olduğu için zorunluluktur . (Harun'un örneğin dayanarak) sizin PHTML bu kullanın:

<dt><?= $this->formLabel($this->element->getName(),
                     $this->element->getLabel()) ?></dt>
<dd><?= $this->{$this->element->helper}(
                     $this->element->getName(),
                     $this->element->getValue(),
                     $this->element->getAttribs(),
                     $this->element->options
                ) ?>
<a href="<?= $this->linkHref; ?>"><?= $this->linkTitle; ?></a>
<?= $this->formErrors($this->element->getMessages()) ?>

</dd>

SEÇENEKLERİ! SEÇENEKLERİ! SEÇENEKLERİ! Seni bulmak için gerektiğinde nerede oldu?! Yani onay kutularını kullanıyorsanız, yardımcı için aşağıdaki eklemek için unutmayın:

$this->element->options

Bu Zend_Form_Element_Checkbox (bu SEO s) sahip bir Terms and Conditions onay eklenmesi için iyi çalışır