Zend okvirni Body Tag View Helper

Z Steven Lloyd Watkin , sobota 21. avgust 2010 11:13
Photo from  http://www.flickr.com/photos/daniello/

Fotografija iz http://www.flickr.com/photos/daniello/

Povzetek

Tukaj bom razpravljal oblikovanje pogled pomagač za spreminjanje HTML oznake, in še posebej telesa tags. Ustvarjenih zaradi helper omogoča funkcionalnosti podobna glava / pomočnice pogled inlineScript že v standardni Zend okvirnega pogled pomočnice, vendar omogoča programsko spremembo tag atributov. Definitivno check out demo strani in oznako na GitHub.

Motivacija

Standard Zend okvirni pogled pomočniki so velik nabor orodij za racionalizacijo Vsakdanje naloge pogled in omogočajo spreminjanja / dodajanja skripte in glave blokov (običajno je potekala v postavitev), od znotraj da brez uporabe grda žaga (tj. glavo * / inlineScript pogled pomočniki).

Ob priložnosti sem ugotovila potrebo po spremembah <body> oznako, na primer dodajanje onload , razred, ali style atribut itd Prav tako morajo biti sposobne opravljati to od znotraj druge reševalce pogled. Vzemite to po izmišljene primer ...

Na spletni strani X, nekatere strani, vsebuje standardne dojo obrazce. Ti dojo obrazci so potekala v mnenju pomočnice za udobje. Na splošno se je odločila, da ne vključuje dojo CSS razrede v telesu tag in jih le dodali, če je to potrebno. Obstaja morda nekaj pomočniki pogled na strani, ki jih je treba dodati svoje atribute za telo tag. (Sem rekel, da je izmišljeno)

Koda je na voljo na mojem GIT skladišču @ GitHub in demo strani .

Kako deluje

Ko ustvarjate pogled telo tag helper Kmalu sem spoznal, da je večina kode ni specifična za kar sem bil v razvoju, zato sem potegnil ven skupna funkcionalnost v abstraktni razred. Z betoniranje abstraktni razred, je mogoče spremeniti nobene oznake na enak način kot telo tag razpravljali tukaj kar koda veliko bolj versitile.

Pod pokrovom (tako rekoč) je koda, temeljila na stopnji glavo * in inlineScript pogled pomočnikov. Uporablja Zend_View_Helper_Placeholder_Container_Standalone za shranjevanje atribute in njihove vrednosti, dokler so potrebni. Posoda se uporablja Zend_Registry za shranjevanje vrednosti po ključnih opredeljeni v razredu (če pogledate na enoto testov sem jasno registra po vsaki test).

Koda bi se dobro povezujejo z " Zend_Layout Naked in Zend_View "kodo sem pisal o tem pred nekaj tedni ali kot del standardne Zend okvirnega MVC namestiti.

Uporaba

Razred mora biti zelo enostavno za uporabo. Prvič dve postavki so potrebne v vašo postavitev skript na naslednji način:

  <? Php echo $ to-> bodyTag ()?>
 <? Php echo $ to-> bodyTag () -> toString (Pro_View_Helper_AbstractTag:: ZAPRTO)?> 

Opomba: boste morali spremeniti ime razreda bi morali premakniti pogled pomočnik svojo knjižnico. Očitno konstanta je na voljo z izvajanjem (bodyTag), kakor tudi z abstraktno razred.

Primer za uvedbo sprememb v telesu tag z namenom pomočnik echo <body myclass" class="nihilo style="text-align-left; width: 80em"> je:

  <? Php
 $ To-> bodyTag ('razred', 'nihilo ")
     -> BodyTag ('stil', 'text-align: left')
     -> BodyTag ("slog", "širina: 80em", false, ";")
     -> BodyTag ('razred', 'myclass ")
 ?> 

To je mogoče doseči v celotnem pogled datoteko, v več pomočnice pogled in postavitev datoteko (če ji pred telo tag izpisan). Atributi se lahko odstrani / mogoče prepisati vrednosti, medtem ko dodani in priložen (separator se lahko prenesejo). Če se ista vrednost atributa opravili večkrat le enem izvodu, napisana z atributom.

Za celoten demo ali vilice GitHub skladišču in rok demo.php datoteke v vašem brskalniku, ali pa obiščite to stran , da ga vidim v akciji. Uporaba demo.php scenarij predpostavlja, da imate Zend Autoloader (ali podobno) že setup.

Ustvarjanje lastne Tag helper

Za izvajanje svojega pomočnika mnenju le razširjajo abstraktni razred tag in prepisati naslednje lastnosti razreda:

  • $ _regKey: Unikaten ključ za oznako (ki se uporablja za Zend_Registry)
  • $ _validAttributes: Zbirko veljavna imena atributa, je treba male v skladu z W3C
  • $ _selfClosing: Boolova vrednost, navedite, ali tag je self zapiranje ali ne, npr <br/>
  • $ _tagName: Ime oznake (tj. ki so v tem primeru)

Torej, končno kodo za bodyTag helper mnenju samega, njegovih zelo kompaktna:

 / ** * Poglej pomočnika za telo tag * * @ avtor Lloyd Watkin * @ od 21/08/2010 * @ paketa Pro * @ subpackage ViewHelper * Pro_View_Helper_BodyTag / razred razširja Pro_View_Helper_AbstractTag {/ ** * Registry ključ za ogrado * * @ var string * / $ zaščitena _regKey = 'Pro_View_Helper_BodyTag'; / ** * Katere lastnosti so veljavne * * Trenutno edini atributi STF podpira * (S = stroga, T = PREHODNE, F = FRAMESET) * * @ glej http://www .w3schools.com/tags/tag_body.asp * @ var array * / $ zaščitena _validAttributes = array (/ * Standard Atributi * / "razred", "dir", "id", "lang", "stil", "title "," xml : lang ', / * Event Atributi * /' onclick ',' ondblclick "," onload "," onmousedown "," onmousemove "," onmouseout "," onmouseover "," onmouseup "," onkeydown ", "onkeypress", "onkeyup", "onunload"); / ** * Self zaključno oznako?  * * @ Var boolean * / $ zaščitena _selfClosing = false; / ** * Tag ime * @ var string * / $ zaščitena _tagName = "telo";} 

Če ste vzeli pogled na odlagališče pa je tudi skupina unit testov, ki v celoti pokrivajo funkcionalnosti. Unit testov so napisane v PHPUnit in so v BodyTagTest.php datoteko.

Končno ...

Tukaj sem pokazala mojo izvajanje abstraktne tag abstraktno helper pogled (eek) in njenega izvajanja telo tag. Medtem ko se lahko javascript funkcionalnost izvede na druge načine (razen trde kodiranje v času proizvodnje) druge stvari, ne more (ne JavaScript, da je), ne da bi spremenil druge dele vloge. Upam, da vam razrede pomoč v vaši uporabi ...

3 odgovor v "Zend Tag okvirni Body View Helper"

  1. Moj automagic Povezivač je povzročil ob izdaji v kodo za XML, tako prezrite to vprašanje:)

  2. [...] Original tukaj: Evilprofessor.co.uk »Zend okvirnega Body Tag View Helper št [...]

  3. [...] Več od prvotnega vira: Evilprofessor.co.uk »Zend okvirnega Body Tag View Helper Share in [...]

Leave a Reply













Panorama Tema, ki jo Themocracy

6 obiskovalcev online zdaj
2 gostov, 4 pošto, 0 članov
Max Obiskovalcev danes: 17 ob 12:28 pm UTC
Ta mesec: 26 ob 2011/07/05 12:35 UTC
Letos: 130 28-03-2011 ob 22:40 UTC
Ves čas: 130 28-03-2011 ob 10:40 UTC