Zend Framework body Näytä Helper

By Steven Lloyd Watkin , lauantai 21 elokuu 2010 23:13
Photo from  http://www.flickr.com/photos/daniello/

Kuva http://www.flickr.com/photos/daniello/

Yhteenveto

Tässä käsittelen luomista, jotta apulainen muuttaa HTML-koodit, ja erityisesti body-elementit. Luonut tarkastella apulainen avulla toiminnallisuus päähän * / inlineScript tarkastella auttajia jo standardin Zend Framework mielestä auttajia, mutta sallii ohjelmallinen muutos tag ominaisuuksia. Ehdottomasti tarkistaa esittelysivu ja koodi GitHub.

Motivaatio

Standardi Zend Framework mielestä auttajat ovat suuri joukko työkaluja tehostamista arkisia tarkastella tehtäviä ja mahdollistaa muutoksen / lisäys skriptit ja header lohkot (järjestetään pääsääntöisesti kaava) sisällä mielestä soveltamatta ruma hakata (eli päätä * / inlineScript mieltä avustajat).

Kun kerran olen löytänyt tarvetta tehdä muutoksia <body> tunnisteen, esimerkiksi lisäämällä onload , luokka tai tyyliattribuutin jne. Olen myös oltava mahdollista suorittaa näitä käsin muiden mielestä auttajat. Ota tämä seuraava keinotekoinen esimerkki ...

Sivustossa X tietyt sivut sisältävät vakiona dojon muotoja. Nämä dojo lomakkeet pidetään näköetäisyydellä auttajia mukavuussyistä. Yleensä se on päättänyt olla sisällyttämättä dojo CSS luokkia body ja vain lisätä niitä tarvittaessa. Ei ehkä useita näkymä auttajia sivulla että tarve lisätä omia määritteet body. (Sanoin sen väkinäinen)

Koodi on käytettävissä omassa GIT arkistossa @ GitHub ja esittelysivu .

Miten se toimii

Kun luot body mieltä auttaja Huomasin pian, että suurin osa koodi ei ollut erityinen, mitä olin kehittynyt niin olen vetänyt yhteisen toiminnallisuuden osaksi abstrakti luokka. Vuoteen betonointi abstrakti luokka on mahdollista tehdä muutoksia tag samalla tavalla kuin body keskusteltu täällä tekee koodin paljon monipuolisia.

Alla huppu (niin sanotusti) koodi perustuu siihen, että pään * ja inlineScript mieltä auttajia. Se hyödyntää Zend_View_Helper_Placeholder_Container_Standalone tallentaa attribuutit ja niiden arvot, kunnes niitä tarvitaan. Astiaa käyttää Zend_Registry tallentaa arvojen keskeinen määritelty luokassa (jos tarkastelemme Osatestit olen selvästi rekisterin alas kunkin kokeen jälkeen).

Koodi sopisi hyvin yhteen " Naked Zend_Layout ja Zend_View "koodi Kirjoitin pari viikkoa sitten tai osana standardin Zend Framework MVC asentaa.

Käyttö

Luokka on hyvin yksinkertainen käyttää. Ensinnäkin kaksi merkintää tarvitaan omassa asettelu script seuraavasti:

  <? Php echo $ this-> bodyTag ()?>
 <? Php echo $ this-> bodyTag () -> toString (Pro_View_Helper_AbstractTag: KIINNI)?> 

Huomautus: Sinun täytyy vaihtaa luokan nimi pitäisi siirrät tarkastella maalimies omaan kirjastoon. Ilmeisesti vakio on saatavilla täytäntöönpanon (bodyTag) kautta sekä abstrakti luokka.

Esimerkkinä muutosten tekeminen body käyttäen mielestä apulaisiksi echo <body class="nihilo myclass" style="text-align-left; width: 80em"> on:

  <? Php
 $ This-> bodyTag (luokka ',' nihilo)
     -> BodyTag ("tyylinen", "text-align: left")
     -> BodyTag ("tyylinen", "leveys: 80em", false "; ')
     -> BodyTag (luokka ',' myclass)
 ?> 

Tämä voidaan tehdä koko näkymä tiedoston useissa mielestä auttajia ja taittotiedosto (jos se ennen body on kirjoitettu). Ominaisuudet voidaan poistaa / päälle taas arvoja voidaan lisätä ja liitteenä (erotin voidaan siirtää). Jos sama määritteen arvo on läpäissyt useita kertoja vain yksi kappale on kirjoitettu attribuutin.

Täydellinen demo joko haarukka GitHub arkiston ja suorita demo.php tiedosto omassa selaimessa, tai vaihtoehtoisesti käydä tällä sivulla nähdä sen toiminnassa. Käyttö demo.php komentotiedosto olettaa olet Zend Autoloader (tai vastaava) jo määritetty.

Luominen oman tunnisteen auttaja

Toteuttaa oman näkemyksenne auttaja yksinkertaisesti laajentaa abstraktin tag luokka ja korvaa seuraavia luokan ominaisuudet:

  • $ _regKey: Avaimet tunnisteet (käytetään Zend_Registry)
  • $ _validAttributes: Joukko päteviä attribuuttien nimet, olisi pieni noudattaa W3C
  • $ _selfClosing: Totuusarvon määrittää, jos tunniste on itsestään sulkeutuvia tai ei, esim. <br/>
  • $ _tagName: Nimi tunnisteen (ts. tässä esimerkissä)

Joten lopuksi koodi bodyTag mielestä auttaja itse, sen erittäin kompakti:

 / ** * Katso apulainen body * * @ author Lloyd Watkin * @ alkaen 21/08/2010 * @ paketti Pro * @ subpackage ViewHelper * / class Pro_View_Helper_BodyTag ulottuu Pro_View_Helper_AbstractTag {/ ** * rekisteriavain Paikkamerkki * * @ var merkkijono * / protected $ _regKey = 'Pro_View_Helper_BodyTag', / ** * Mitkä ominaisuudet ovat voimassa * Toistaiseksi vain STF määritteet tuki * (S = tiukkaa, T = SIIRTYMÄ, F = FRAMESET) * * @ ks. http://www .w3schools.com/tags/tag_body.asp * @ var array * / protected $ _validAttributes = array (/ * Standard ominaisuudet * / "luokka", "dir", "id", "Lang", "tyylinen", "otsikko ',' xml : lang ", / * Tapahtuma attribuutit * /" onclick ',' ondblclick "," onload "," onmousedown "," onmousemove "," onmouseout "," onmouseover "," onmouseup "," onkeydown " "onkeypress", "onkeyup", "onunload"); / ** * Self sulkevan tunnisteen?  * * @ Var boolean * / protected $ _selfClosing = false; / ** * Tag nimi * @ var merkkijono * / protected $ _tagName = "body";} 

Jos katsomaan arkiston siellä on myös joukko yksikön testit kattavat täysin toiminnallisuutta. Yksikkö testit on kirjoitettu phpunit ja ovat BodyTagTest.php tiedosto.

Lopuksi ...

Täällä olen osoittanut teille täytäntöönpanon abstrakti tag abstrakti näkymä maalimies (EEK) ja sen body täytäntöönpanoa. Vaikka JavaScript-toimintoja voidaan toteuttaa muulla tavoin (muu kuin kova koodaukseen lähtö aikaa) muut asiat eivät voi (ilman JavaScript on) muuttamatta muiden osien soveltamista. Toivottavasti löydät luokat apua hakemuksen ...

3 Vastaus jotta "Zend Framework body View Helper"

  1. Oma automagic linkitin on aiheuttanut on kysymys koodi XML joten sivuuttaa tätä kysymystä:)

  2. [...] Alkuperäinen täältä: Evilprofessor.co.uk »Zend Framework body Näytä Helper o [...]

  3. [...] Lisää alkuperäisestä lähteestä: Evilprofessor.co.uk »Zend Framework body View Helper Jaa ja [...]

Jätä vastaus













Panorama Teema Themocracy

8 vierailijaa nyt
5 vierasta, 3 vastaan, 0 jäsentä
Max kävijöitä tänään: 23 klo 04:19 UTC
Tässä kuussa: 26 at 05.7.2011 00:35 UTC
Tänä vuonna: 130 at 28-03-2011 22:40 UTC
Kaikki aika: 130 at 28-03-2011 22:40 UTC