Zend Framework Vücut Tag View Helper
Özet
Ben burada daha özel ve HTML etiketleri değiştirmek için gövde etiketlerinin bir görünüm yardımcı oluşturulmasını tartışmak. Oluşturulan görünüm yardımcı standart sağlar baş * / inlineScript görmek yardımcıları zaten işlevselliği benzer Zend Framework yardımcıları, görüntülemek ancak özellikleri değişiklik etiketi programatik sağlar. Kesinlikle demo sayfası ve github üzerinde kod göz atın.
Motivasyon
Standart Zend Framework görünüm yardımcıları sıradan görmek görevleri düzene ve çirkin kesmek uygulamadan değişiklik / ek scriptler ve görünümü içinde başlık blokları (genellikle düzen düzenlenen) için izin için araçlar büyük bir ayarlanır (baş * yani / inlineScript görünüm yardımcıları).
vesilesiyle üzerine ben bir ekleme örneğin, etiket <body> değişiklikler yapmanız gerekir bulduk onload , sınıf veya diğer görünüm yardımcıları style özniteliği içinden bu yapabilecektir gereken gibi ben de. Bu şu yapmacık örnek al ...
X On web sitesi, bazı sayfaların standart içerir dojo oluşturur. Bu dojo formlar kolaylık için görünüm yardımcıları içinde tutulur. Genellikle dojo dahil etmemeye karar edildi CSS ve etiketinde vücut sınıflar onlara gerekli yalnızca ekleyin. Orada vücut etiket özellikleri kendi belki eklemek gerekir sayfada birden çok görünüm yardımcıları. (Ben yapmacık denildi it)
Kod @ depo GIT benim mevcuttur github ve demo sayfası .
Nasıl çalışıyor
Yakında kodunun büyük ben soyut bir sınıfa ortak işlevselliğini çıkardı bu yüzden gelişmekte olan ne özgü olmadığını fark vücut etiketi görüntüleme yardımcı oluştururken. soyut sınıf beton ile vücudun etiketi burada çok daha versitile kod yapma anlatıldığı gibi aynı şekilde herhangi bir etiketi değiştirmek mümkündür.
kaput (tabiri caizse) altında kod baş * ve inlineScript görünüm yardımcıları bu dayanmaktadır. Onlar gereken kadar Zend_View_Helper_Placeholder_Container_Standalone niteliklerini ve değerlerini saklamak için kullanır. Konteyner kendisi kullanır Zend_Registry bakmak sizi (eğer sınıf tanımlı için anahtar deposu altında değerler testleri birim ben test sonra her yere kayıt açık).
Kodu "iyi ile yaptığınız uygun Çıplak Zend_Layout ve Zend_View Zend Framework "standart çift hakkında yazdı ben kod parçası hafta önce ya da MVC yükleyin.
Kullanımı
Sınıf kullanımı çok basit olmalıdır. aşağıdaki gibi Öncelikle iki girdileri düzen komut dosyası içinde gereklidir:
bodyTag () <? php $ this-echo>?> bodyTag () <? php $ this-eko -> toString (Pro_View_Helper_AbstractTag: KAPAT)?>
Not: Eğer kendi arşivine görüntülemek yardımcı hareket etmeliyiz sınıf adını değiştirmeniz gerekir. Belli ki sürekli uygulanması ile kullanılabilir (bodyTag) soyut sınıf olarak aracılığıyla.
style="text-align-left; width: 80em"> olduğunu <body class="nihilo myclass" yankı görüntülemek yardımcı kullanarak vücut etiket değişiklik yapmadan bir örnek:
<? Php $ This-> bodyTag ('sınıf', 'nihilo') -> BodyTag ('style', 'text-align: left) -> BodyTag ('style', 'width: 80em', false, ';') -> BodyTag ('sınıf', 'sınıfım') ?>
Bu, birkaç görünüm yardımcıları olarak görmek dosya boyunca yapılabilir ve düzeni dosyası ile (kendi vücut etiket dışarı yazılmadan önce). Nitelikler / yazılır iken değerler eklenebilir ve (ayırıcı geçmiş olabilir) eklenir kaldırılabilir. Aynı öznitelik değeri birkaç kez geçti ise sadece tek bir kopyasını niteliği ile yazılır.
ve için tam bir demo ya çatal github depo veya kendi tarayıcı, sizin demo.php dosyasında çalıştırmak alternatif ziyaret bu sayfada eylem olarak görmek için. Kullanımı demo.php script kurulum varsayar zaten var Zend Autoloader (veya benzeri).
Kendi Tag yardımcı oluşturma
Kendi bakış yardımcı sadece soyut etiket sınıfı uzatmak ve aşağıdaki sınıf özellikleri üzerine uygulamak için:
- $ _regKey: Için etiket anahtar benzersiz (Zend_Registry için kullanılır)
- $ _validAttributes: Öznitelik isimleri geçerli bir dizinin, uymak için küçük olmalıdır W3C
- $ _selfClosing: Boolean değeri <br/> örneğin, etiket değil kendi kendine kapanan veya eğer belirtmek için
- $ _tagName:) Örneği Adı vücut yani tag (bu
Bu yüzden, bodyTag görünüm yardımcı kendisinden, çok kompakt için nihayet kodu:
/ ** * Gövde etiketini * görüntüleme yardımcı @ yazar Lloyd Watkin * @ * tutucu için 21/08/2010 * @ paket Pro * @ subpackage ViewHelper * / class Pro_View_Helper_BodyTag Pro_View_Helper_AbstractTag uzanır beri {/ ** * Kayıt Defteri anahtarı @ var string * / $ korumalı _regKey = 'Pro_View_Helper_BodyTag'; / ** * Hangi özellikler Şu anda sadece STF (S = KESİN, T = Geçici, F = FRAMESET) * * @ http://www görmek * desteklenen özellikleri geçerli * * vardır @ var array * .w3schools.com/tags/tag_body.asp * / protected $ = array (/ * Standart özellikler * _validAttributes / 'sınıf', 'dir', 'id', 'dil', 'style', 'başlık ',' xml : lang ', / * Olay Nitelikler * /' onclick ',' ondblclick ',' onload ',' onmousedown ',' onmousemove ',' onmouseout ',' onmouseover ',' onmouseup ',' onkeydown, , 'onkeyup', 'onkeypress' onunload '); / ** * Kendini kapanış etiketi? * * @ Var boolean * / protected $ _selfClosing = false; @ var string * / ** * Tag adı * * / protected $ _tagName = "beden";}
Eğer depo bir göz atacak olursak, aynı zamanda tam işlevsellik kapak birim testleri bir grup var. Birim testleri yazılmış PHPUnit ve bulunan BodyTagTest.php dosyası.
Nihayet ...
Burada ben size bir özet etiketi soyut görünüm helper (eek) ve vücut etiket uygulamasının benim uygulanması gösterdin. Iken javaScript işlevselliği (sert çıkış anda kodlama hariç) diğer şekillerde uygulanabilir diğer şeyler yapamaz uygulamanın diğer parçaları değiştirmeden (bir javaScript olmadan). Sana sınıflar başvuru yararlı bulacağını umuyorum ...


















































): XML böylece sorunu görmezden lütfen Benim automagic linker kodunu konuda neden oldu
[...] Burada orijinal: Evilprofessor.co.uk »Zend Framework Vücut Tag View Helper yok [...]
orijinal kaynaktan daha [...]: Evilprofessor.co.uk »Zend Framework Vücut Tag View Helper Payı ve [...]