Zend_Form ViewScript dekoratör / geçen argümanlar

3 Cevap php

Ben Zend_Form uzanan bir form var. Ben böyle bir ViewScript dekoratör içine formu yerleştirerek ediyorum:

$this->setDecorators(array(array('ViewScript', array('viewScript' => 'game/forms/game-management.phtml'))));

Ben bu ViewScript bir değişken geçmek ister ama bu yapılabilir nasıl emin değilim ediyorum.

Kısmi (render için $ this-> app_store_icon sağlayan) bir Zend_View olarak işler yana işlenecek değişkenler geçmek için bir yol olması gerektiği gibi görünüyor. Ben şu çalıştı ama boşuna.

$this->setDecorators(array(array('ViewScript', array('viewScript' => 'game/forms/game-management.phtml'),array('app_store_picon'=>$current_app_store_picon))));

Bu halletmek için nasıl Herhangi bir yardım mutluluk duyacağız.

teşekkürler

3 Cevap

Bu bir, biraz zor anlamaya yarım saat dersin beni aldı, ama bu yapılabilir :)

Nokta ViewScript dekoratör değil elemana seçenekleri geçiyoruz olmasıdır. Seçeneğini ekleme:

$this->setDecorators(array(array('ViewScript', array(
    'viewScript' => 'test.phtml',
    'foo'=>'baz',
))));

ya da seçenekleri bir dizi:

$this->setDecorators(array(array('ViewScript', array(
    'viewScript' => 'test.phtml',
    array(
        'foo'=>'baz',
        'spam'=>'ham',
    ),
))));

Kısmi bu çıkıyorum, test.phtml:

$option = $this->element->getDecorator('ViewScript')->getOptions();

İlk durumda, bir seçenek geçti ile o olacak $option['foo'] ve ikinci o $option[0]['foo'] olacak

HTH :)

Ben düşünmelisiniz düşünüyorum bir form, içinde bir simge ekleyerek elde etmek olası yollarından başka bir çift var,

Biri kendi eleman tipi eklemek olabilir, ve (ben unsurları oluşturmak için bir sonraki yardım için basit? Simgelerini eklemek için bunu yapmak, ya da dosya tarayıcıları) simgesi için özel bir dekoratör eklersiniz. Bunu yapmak için oldukça basit bir meseledir.

Diğer bu tür seçenekleri gibi src gibi özelliklerini belirleyebilirsiniz hangi basit, öğe için bir HtmlTag dekoratör eklemek olacaktır.

Bu iki çözüm aslında yönetmek için basit şeyler yapma üstüne başka gizli bir fayda gelir, onlar da kullanımda her viewscript dekoratör için bir kez kullanılan kısmi görünümü yardımcıları kullanımını kaldırın.

Yerine bütün formda unsurları üzerinde viewscript dekoratör kullandığınızda kısmi görünümü yardımcı derece (zaten arada oldukça büyük olduğu) formun zaman ve bellek yükü ekleyebilirsiniz, bu şiddetlenir!

Ben viewscript.phtml dosyasına bir puan durumunu gösteren bir html kodunu geçmek için gerekli. Ben normal bir zend görünümü senaryosuna geçiyoruz sanki kontrolör eylem değeri ileterek olan dekoratör ile birlikte geçen daha basit bir yolunu buldu. örn:

<Controller>
// pass status and score to view
$this->view->status = $this->_sitenamehelper->get_status($id);
$this->view->score = $this->_sitenamehelper->get_score($id);

<viewscript.phtml partial file>
<?php $form = $this->element; ?>
<b>Status: </b><?php echo $form->getView()->status; ?>
<b>Score: </b><?php echo $form->getView()->score; ?>

Ve orada herhangi bir html render kodunu geçebilir .. Ben simgeler için çalışmak olacaktır sanırım ..

Mohannad