Zend Framework Katawan Tag View Helper

By Steven Lloyd Watkin , Sabado 21 Agosto 2010 11:13
Photo from  http://www.flickr.com/photos/daniello/

Larawan mula sa http://www.flickr.com/photos/daniello/

Buod

Dito ko talakayin ang pagbuo ng isang helper view para sa pagbabago ng mga tag na HTML, at higit na partikular tag katawan. Ang nilikha helper view nagpapahintulot andar na katulad ng ulo * / view katulong inlineScript mayroon na sa standard Zend Framework katulong view, ngunit nagbibigay-daan sa programming pagbabago ng mga katangian ng tag. Tiyak na suriin ang mga demo na pahina at ang code sa github.

Pagganyak

Ang standard na Zend Framework view katulong ay isang mahusay na set ng mga kasangkapan para sa streamlining gawain pangmundo tingnan at nagpapahintulot para sa mga pagbabago / pagdadagdag ng mga scripts at header bloke (karaniwang gaganapin sa layout) mula sa loob ng view na walang nag-aaplay pangit hacks (ibig sabihin ang ulo * / inlineScript tingnan mga katulong).

Sa okasyon ko ay may natagpuan na kailangan upang gumawa ng pagbabago sa <body> tag, halimbawa sa pagdaragdag ng isang onload , klase, o style attribute atbp ko rin na kinakailangan upang magawa ito mula sa loob ng iba pang mga katulong view. Dalhin ninyo ang mga sumusunod Noy halimbawa ...

Sa website X, sa ilang mga pahina kasama ang standard dojo forms. Ang mga dojo form ay gaganapin sa loob katulong view para sa kaginhawaan. Kadalasan ito ay nagpasya na hindi isama ang mga dojo CSS mga klase sa tag katawan at lamang idagdag ang mga ito kapag kinakailangan. May marahil ng ilang mga view katulong sa pahina na kailangan upang magdagdag ng kanilang sariling mga katangian sa ang tag na katawan. (Sinabi ko ito ay Noy)

Ang code ay magagamit sa aking Git repository @ github at ang demo na pahina .

Paano ito gumagana

Kapag lumilikha ng katawan tag view helper ko sa lalong madaling panahon na natanto na ang karamihan ng mga code ay hindi na tiyak sa kung ano ako ay pagbuo kaya ako hugot ang mga karaniwang tungkulin sa isang abstract class. By concreting sa abstract class na ito ay posible na baguhin ang anumang mga tag sa parehong paraan na ang katawan tag tinalakay dito ang paggawa ng code ng mas versitile.

Sa ilalim ng hood (kaya magsalita) ang code ay batay sa na ng ulo * at ang inlineScript tingnan mga katulong. Ito gumagamit Zend_View_Helper_Placeholder_Container_Standalone sa tindahan ng mga katangian at ang kanilang mga halaga ng hanggang sa sila ay kinakailangan. Ang lalagyan mismo ay gumagamit ng Zend_Registry sa tindahan ng mga halaga sa ilalim ng key tinukoy sa mga klase (kung titingnan mo sa unit test ko malinaw ang registry down pagkatapos ng bawat pagsubok).

Ang code ay magkasya sa mabuti sa mga " Zend_Layout Naked at Zend_View "code ko wrote tungkol sa isang pares ng mga linggo nakaraan o bilang bahagi ng standard Zend Framework MVC install.

Paggamit

Ang klase ay dapat na tunay simpleng gamitin. Una dalawang entries ay kinakailangan sa loob ng iyong layout script tulad ng sumusunod:

  <? Php echo $ ito-> bodyTag ()?>
 <? Php echo $ ito-> bodyTag () -> toString (Pro_View_Helper_AbstractTag:: CLOSE)?> 

Tandaan: Kailangan mong baguhin ang pangalan ng klase na dapat mong ilipat ang view helper sa iyong sariling library. Malinaw na ang patuloy na ay magagamit sa pamamagitan ng pagpapatupad (bodyTag) pati na rin sa pamamagitan ng mga abstract class.

Ang isang halimbawa ng paggawa ng mga pagbabago sa iyong katawan na tag gamit ang view helper sa echo <body myclass" class="nihilo style="text-align-left; width: 80em"> ay:

  <? Php
 $ Na ito-> bodyTag ('class', 'nihilo')
     -> BodyTag ('style', 'text-align: kaliwa')
     -> BodyTag ('style', 'width: 80em', false, ';')
     -> BodyTag ('class', 'myclass')
 ?> 

Ito ay maaaring gawin sa buong file tingnan, sa ilang mga katulong view, at sa mga layout file (na ibinigay nito sa harap ng katawan tag ay nakasulat sa labas). Katangian maaaring alisin / papatungan habang halaga ay maaaring idinagdag at idinagdag (separator maaaring maipasa). Kung ang parehong halaga ng katangian ay lumipas na ng ilang beses lamang ng isang solong kopya ng nakasulat na may mga katangian.

Para sa isang buong demo alinman tinidor ang github repository at patakbuhin ang demo.php file sa iyong sariling browser, o Bilang kahalili bisitahin ang pahina na ito upang makita ang mga ito sa aksyon. Paggamit ng demo.php script Ipinapalagay ikaw ay may mga templates Autoloader (o katulad) na setup.

Paglikha ng iyong sariling Tag helper

Upang ipatupad ang iyong sariling tingnan ang helper lang extend ang abstract class tag at patungan ang mga sumusunod na mga katangian ng klase:

  • $ _regKey: Ang isang natatanging susi para sa mga tag (ginagamit para sa Zend_Registry)
  • $ _validAttributes: Ang isang array ng wastong pangalan ng katangian, ay dapat na nasa maliliit na titik na sumunod sa W3C
  • $ _selfClosing: Boolean halaga upang tukuyin kung ang tag ay sarili pagsasara o hindi, eg <br/>
  • $ _tagName: Pangalan ng mga tag (ie katawan sa halimbawa na ito)

Kaya, sa wakas ang code para sa bodyTag helper view ng kanyang sarili, kanyang tunay compact:

 / ** * * * Tingnan ang helper para sa katawan tag * * @ akda Lloyd Watkin * @ since 21/08/2010 * @ package Pro * @ subpackage ViewHelper * / class Pro_View_Helper_BodyTag nagpalawak Pro_View_Helper_AbstractTag {/ ** * Registry key para placeholder * * @ var string * / $ protektado _regKey = 'Pro_View_Helper_BodyTag'; / ** * Aling mga katangian ay wasto * * * * Sa kasalukuyan lamang STF katangian suportado * (S = MAHIGPIT, T = iw, F = FRAMESET) * * @ makita http://www .w3schools.com/tags/tag_body.asp * @ var array * / $ protektado _validAttributes = array (/ * * Standard Attribute 'dir' / 'class',, 'id', 'lang', 'style', 'pamagat ',' xml : lang ', / * Event Katangian * /' onclick ',' ondblclick ',' onload ',' onmousedown ',' onmousemove ',' onmouseout ',' onmouseover ',' onmouseup ',' onkeydown ', 'onkeypress', 'onkeyup', 'onunload',); / ** * Self pagsasara tag?  * * * * * * @ Var boolean * / $ protektado _selfClosing = false; / ** * Tag pangalan * * @ var string * / $ protektado _tagName = 'katawan';} 

Kung gumawa ka ng isang tumingin sa repository mayroong din isang grupo ng mga pagsubok na yunit na ganap na masakop ang mga functionality. Ang yunit na mga pagsusulit ay nakasulat sa PHPUnit at sa BodyTagTest.php file.

Sa wakas ...

Dito ko na ipinapakita sa iyo ang aking pagpapatupad ng isang abstract tag abstract view helper (eek) at ang kanyang katawan tag pagpapatupad. Habang ang JavaScript functionality ay maaring ipatupad sa ibang mga paraan (bukod sa hard coding sa output oras) iba pang bagay na maaaring hindi (walang JavaScript na) walang pagbabago sa ibang bahagi ng aplikasyon. Umaasa ako sa iyo na hanapin ang mga klase helpful sa iyong application ...

3 sagot sa "Zend Framework Katawan Tag View Helper"

  1. My automagic linker ay may dulot sa isyu sa code para sa XML kaya't mangyaring huwag pansinin na isyu:)

  2. [...] Ang orihinal dito: Evilprofessor.co.uk »Zend Framework Katawan Tag View Helper Walang [...]

  3. [...] Pa mula sa orihinal na source: Evilprofessor.co.uk »Zend Framework Katawan Tag View Helper Ibahagi at [...]

Mag-iwan ng isang Sumagot













Panorama Theme sa pamamagitan ng Themocracy

4 mga bisita sa online ngayon
3 mga bisita, 1 bots, 0 miyembro
Max mga bisita ngayon: 17 sa 00:28 UTC
Sa buwan na ito: 26 at 2011/07/05 12:35 UTC
Sa taong ito: 130 sa 28-03-2011 22:40 UTC
Lahat ng oras: 130 sa 28-03-2011 10:40 UTC