Zend Framework body-taggen Visa Helper

Genom Steven Lloyd Watkin , lördag 21 aug 2010 11:13
Photo from  http://www.flickr.com/photos/daniello/

Bild från http://www.flickr.com/photos/daniello/

Sammanfattning

Här diskuterar jag att skapa en uppfattning hjälpare för att ändra HTML-taggar, och mer specifikt body-taggarna. Den skapade visa hjälpare kan funktionaliteten liknar den i * / head inlineScript view helpers redan i standarden Zend Framework view helpers, men ger de programmatiska ändring av tagg attribut. Definitivt kolla in demosida och koden på GitHub.

Motivation

Standarden Zend Framework view helpers är en stor uppsättning verktyg för att effektivisera vardagliga visa uppgifter och möjliggöra för modifiering / tillägg av manus och block header (i allmänhet i layouten) från inom synhåll utan att tillämpa ful hack (dvs huvudet * / inlineScript view helpers).

Vid tillfälle har jag funnit behov av att göra ändringar i <body>, till exempel att lägga till en onload , klass eller stil attribut etc. Jag också krävs för att kunna utföra den här inifrån andra view helpers. Ta detta följande krystat exempel ...

På webbplatsen X, vissa sidor omfattar vanliga dojo former. Dessa dojo former hålls inom view helpers för enkelhetens skull. Generellt har man beslutat att inte inkludera dojon CSS klasser i body-taggen och lägger bara till dem vid behov. Det kan finnas flera view helpers på sidan som behöver lägga sina egna attribut till body-taggen. (Jag sa att det var krystat)

Koden finns i min GIT slutförvar @ GitHub och demosida .

Så fungerar det

När du skapar kroppen hjälpare taggen visar jag insåg snart att de flesta av koden var inte specifik för vad jag höll på att utvecklas så jag drog ut den gemensamma funktionalitet i en abstrakt klass. Genom betongarbeten abstrakt klass är det möjligt att modifiera varje etikett på samma sätt som kroppens taggen här diskuterade göra koden mycket mer mångsidig.

Under fläkten (så att säga) koden bygger på att i huvudet * och inlineScript hjälpare uppfattning. Den använder Zend_View_Helper_Placeholder_Container_Standalone att lagra attributen och deras värden tills de behövs. Behållaren själv använder Zend_Registry att lagra värden inom det centrala definieras i klassen (om man tittar på enhetstester jag rensa registret ner efter varje test).

Koden skulle passa väl in i " Naked Zend_Layout och Zend_View "koden jag skrev om för ett par veckor sedan eller som en del av standarden Zend Framework MVC installera.

Användning

Klassen bör vara mycket enkelt att använda. Först två poster krävs i layouten script enligt följande:

  <? Php echo $ this-> Bodytag ()?>
 <? Php echo $ this-> Bodytag () -> toString (Pro_View_Helper_AbstractTag:: Stäng)?> 

Obs: Du måste ändra klassnamnet ska du flytta vyn hjälpare till ditt eget bibliotek. Uppenbarligen konstant är tillgänglig genom genomförandet (Bodytag) samt genom det abstrakta klassen.

Ett exempel på att göra ändringar i din body-taggen med tanke hjälpare till eko <body class="nihilo myclass" style="text-align-left; width: 80em"> är:

  <? Php
 $ This-> Bodytag ("klass", "intet")
     -> Bodytag ("stil", "text-align: vänster)
     -> Bodytag ("stil", "bredd: 80em", falskt ",")
     -> Bodytag ("klass", "myclass)
 ?> 

Detta kan göras i hela vyfil i flera view helpers, och i layout-filen (under förutsättning att dess innan body-taggen skrivs ut). Attribut kan tas bort / skrivs över medan värden kan läggas till och bifogas (separator kan skickas). Om samma attributvärdet är passerat flera gånger bara en enda kopia skrivs med attributet.

För en fullständig demo antingen gaffeln GitHub förvaret och kör demo.php filen i din egen webbläsare, eller alternativt besöka denna sida för att se den i aktion. Användningen av demo.php script förutsätter att du har Zend Autoloader (eller liknande) redan installerat.

Skapa din egen tagg hjälpare

För att genomföra en egen uppfattning hjälpare bara förlänga abstrakt taggen klassen och skriva följande klass egenskaper:

  • $ _regKey: En unik nyckel för taggen (används för Zend_Registry)
  • $ _validAttributes: En array av giltiga attributnamn, bör vara gemener för att följa W3C
  • $ _selfClosing: Boolean värde som anger om taggen är självstängande eller inte, t.ex. <br/>
  • $ _tagName: Namn på taggen (dvs kroppen i detta exempel)

Så, till sist koden för Bodytag visa hjälpare, dess mycket kompakt:

 / ** * Visa hjälpare för body-taggen * * @ author Lloyd Watkin * @ sedan 21/08/2010 * @ paket Pro * @ subpackage ViewHelper * / class Pro_View_Helper_BodyTag utökar Pro_View_Helper_AbstractTag {/ ** * registernyckeln för platshållaren * * @ var sträng * / protected $ _regKey = 'Pro_View_Helper_BodyTag', / ** * vilka attribut som är giltiga * * För närvarande har endast STF attribut stöds * (S = strikt, T = ÖVERGÅNGSBESTÄMMELSER, F = FRAMESET) * * @ se http://www .w3schools.com/tags/tag_body.asp * @ var array * / protected $ _validAttributes = array (/ * Standard Attribut * / "klass", "dir", "id", "Lang", "stil", "title ',' xml : lang ', / * Event Attribut * / "onclick", "ondblclick", "onload", "onmousedown", "onMouseMove", "onmouseout", "onmouseover", "onmouseup", "onkeydown" "onkeypress", "onKeyUp", "onunload ',); / ** * Självstängande tag?  * * @ Var boolean * / protected $ _selfClosing = false; / ** * Tag namn * * @ var sträng * / protected $ _tagName = 'kropp';} 

Om du tar en titt på arkivet finns också en grupp av enhetstester som helt täcker funktionalitet. Enheten tester är skrivna i PHPUnit och är i BodyTagTest.php filen.

Slutligen ...

Här har jag visat dig min genomförandet av en abstrakt tag abstrakt syn hjälpare (EEK) och dess organ tag genomförande. Även om JavaScript-funktioner kan genomföras på andra sätt (annat än hårt kodning vid utgången tid) andra saker kan inte (utan javascript alltså) utan att ändra andra delar av ansökan. Jag hoppas du hittar de klasser till hjälp i din ansökan ...

3 Svaren till "Zend Framework Body Helper Tag Visa"

  1. Min Automagic länkare har orsakat vid utfärdandet i koden för XML så snälla ignorera denna fråga:)

  2. [...] Det ursprungliga här: Evilprofessor.co.uk »Zend Framework body-taggen Visa Helper nr [...]

  3. [...] Mer från den ursprungliga källan: Evilprofessor.co.uk »Zend Framework body-taggen Visa Helper Dela och [...]

Lämna ett svar













Panorama Tema av Themocracy

8 besökare online just nu
7 gäster, 1 bots, 0 medlemmar
Max besökare idag: 26 kl 00:46 UTC
Denna månad: 26 kl 2011/07/05 12:35 UTC
I år: 130 på 28-03-2011 22:40 UTC
Alla tid: 130 på 28-03-2011 10:40 UTC