Zend Framework Body Tag megtekintése Helper
Összefoglaló
Itt megvitassák létrehozása céljából segítő módosító HTML, pontosabban szervezet címkéket. A létrehozott nézet segítő lehetővé teszi, hogy hasonló funkcionalitást, hogy a fej * / inlineScript érdekében segítők már szabványos Zend Framework véli segítők, de megengedi a programszerű módosítását tag attribútumok. Csekkold le a demo oldalt, és a kód GitHub.
Motiváció
A standard Zend Framework érdekében segítőket van egy nagy sor eszközök ésszerűsítése érdekében hétköznapi feladatokat és lehetővé teszi a módosítás / mellett a scriptek és a fejléc blokk (általánosan elfogadott az elrendezés) belül a nézetet alkalmazása nélkül csúnya csapkod (azaz a fej * / inlineScript megtekintéséhez segítők).
Amikor alkalommal találtam kell arra, hogy módosítsuk a <body> nevét, például hozzá egy onload , osztály, vagy stílus attribútum, stb Azt is szükséges, hogy képes elvégezni ezt a belülről másikban segítők. Vedd ezt követően konstruált példa ...
A weboldalon X, bizonyos oldalak lehetnek normál dojo formák. Ezek a dojo formák keretében tartott véli segítők a kényelem. Általában úgy határoztak, hogy nem tartalmazza a dojoban CSS osztályokat a szervezetben tag, és csak hozzá őket, ha szükséges. Ott talán több nézet segítők az oldalon, hogy kell hozzá saját attribútumokat a body tag. (Azt mondtam, hogy konstruált)
A kód elérhető a GIT adattárban @ GitHub és a demo oldalt .
Hogyan működik
Létrehozása során a szervezet tag véleménye segítő Hamar rájöttem, hogy a legtöbb kód nem volt jellemző, amit én a fejlődő úgyhogy elővettem a közös funkcionalitást egy absztrakt osztály. Által betonozás az absztrakt osztályban lehetőség van módosítani bármely tag ugyanúgy, mint a body tag tárgyalt itt, tehát a kód sokkal versitile.
Alatta a kapucni (hogy úgy mondjam) a kód alapján, hogy a fej * és a inlineScript nézet segítők. Ez használ Zend_View_Helper_Placeholder_Container_Standalone tárolja a tulajdonságok és az értékek, amíg szükség van rájuk. A konténer maga is Zend_Registry tárolni kulcs alatt szereplő érték meghatározása az osztályban (ha megnézzük a unit tesztek azt törölje a rendszerleíró le minden vizsgálat után).
A kód jól illeszkednek a " Meztelen Zend_Layout és Zend_View "kódot írtam pár héttel ezelőtt, vagy mint a normál Zend Framework MNV telepíteni.
Használata
Az osztály kell nagyon egyszerű a használata. Először két bejegyzés belül kötelesek az elrendezés szkript a következő:
<? Php echo $ this-> bodyTag ()?> <? Php echo $ this-> bodyTag () -> toString (Pro_View_Helper_AbstractTag:: CLOSE)?>
Megjegyzés: meg kell változtatni az osztály nevét kell váltania a nézetet segítő a saját könyvtár. Természetesen az állandó rendelkezésre áll végrehajtása révén (bodyTag), valamint azáltal, az absztrakt osztály.
Egy példa, hogy megváltoztatja a szervezet címke segítségével a véleményen van, hogy segítő echo <body class="nihilo myclass" style="text-align-left; width: 80em"> van:
<? Php $ This-> bodyTag ("osztály", "nihilo") -> BodyTag ('style', 'text-align: left) -> BodyTag ("stílusú", "szélessége: 80em", hamis, ";") -> BodyTag ("osztály", "MyClass") ?>
Ezt meg lehet tenni az egész nézet fájl, több nézet segítők, és az elrendezés fájl (feltéve, hogy mielőtt a body tag ki kell írni). Attribútumok el lehet távolítani / felülírja miközben értékeket lehet adni, és csatolni (elválasztó átadhatók). Ha ugyanazt az attribútum értéke eltelt több alkalommal csak egy példányban van írva az attribútum.
A teljes demo vagy villát a GitHub adattár és futtassa a fájlt demo.php saját böngésző, vagy pedig látogasson el erre az oldalra látni működés közben. Szemléletes példa az demo.php szkript feltételezi, hogy a Zend Autoloader (vagy hasonló) már beállítás.
Saját Tag segítő
Ahhoz, hogy hajtsák végre a saját véleménye segítő egyszerűen kiterjesztik az elvont tag osztályt, és felülírja a következő osztály tulajdonságai:
- $ _regKey: Az egyedi kulcs a tag (használt Zend_Registry)
- $ _validAttributes: Egy sor érvényes attribútum nevek, kisbetűkkel kell írni ahhoz, hogy W3C
- $ _selfClosing: Logikai érték meg, ha címke önzáró vagy nem, pl <br/>
- $ _tagName: Neve a tag (azaz a szervezet ebben a példában)
Így végül a kódot a bodyTag véli segítő magát, annak nagyon kompakt:
/ ** * Nézd meg a segítő szervezet címke * * @ Author Lloyd Watkin * @ Óta 21/08/2010 * @ Csomag Pro * @ Subpackage ViewHelper * / osztály Pro_View_Helper_BodyTag kiterjeszti Pro_View_Helper_AbstractTag { / ** * Registry kulcs helyőrző * * @ Var string * / protected $ _regKey = 'Pro_View_Helper_BodyTag'; / ** * Milyen tulajdonságok érvényesek * * Jelenleg csak STF attribútumok támogatott * (S = szigorú, T = ÁTMENETI, F = FRAMESET) * * @ Lásd http://www.w3schools.com/tags/tag_body.asp * @ Var tömb * / protected $ _validAttributes = array ( / * Standard tulajdonságok * / "Osztály", "dir", "id", "lang", "stílusú", "title", " xml : lang ", / * Esemény tulajdonságok * / "Onclick", "ondblclick", "onload", "onMouseDown ',' onMouseMove", "Onmouseout ',' onmouseover ',' onMouseUp ',' onKeyDown ',' onKeyPress", "Onkeyup ',' onUnload", ); / ** * Saját záró tag? * * @ Var logikai * / protected $ _selfClosing = false; / ** * Tag neve * * @ Var string * / protected $ _tagName = 'test'; }
Ha megnézed a tárolóból van még egy csoport a unit tesztek, amely teljes mértékben fedezi a funkciót. Az egység tesztek írt PHPUnit és a BodyTagTest.php fájlban.
Végül ...
Itt már látható, ha az én végrehajtása absztrakt tag absztrakt segítő (EEK) és a body tag végrehajtását. Miközben a JavaScript funkciókat lehet megvalósítani más módon (kivéve a kemény kódolás a kimeneti idő szerint) más dolog nem tud (JavaScript nélkül, hogy a) megváltoztatása nélkül más részein a kérelmet. Remélem, megtalálja az osztályok hasznos az alkalmazás ...


















































Én automatán linker okozott a kérdést a kódot, az XML ezért kérjük figyelmen kívül hagyni, hogy a kérdés:)
[...] Az eredeti itt: Evilprofessor.co.uk »Zend Framework Body Tag megtekintése Helper-i [...]
[...] Tovább az eredeti forrás: Evilprofessor.co.uk »Zend Framework Body Tag megtekintése Helper Részvény és [...]