Tag Body Zend Kornizë Shiko Helper
Përmbledhje
Këtu kam diskutuar në krijimin e një ndihmë të parë për modifikimin tags HTML, dhe më konkretisht tags trupit. View ndihmës krijuar lejon funksionalitet të ngjashëm me kokë * / view ndihmëtarë inlineScript tashmë në standard Zend Kornizë ndihmës të parë, por i lejon modifikimin e programatike të atributeve tag. Patjetër të shikoni faqen e demo dhe kodin në github.
Motivimi
Standardi i parë Zend ndihmëtarë Kornizë janë një grup të madh të mjeteve për rregullimin e detyrat e kësaj bote të parë dhe duke i lejuar për modifikim / shtesë të Scripts dhe blloqe header (mbajtur në përgjithësi në layout) nga brenda parë pa aplikuar hacks shëmtuar (dmth. * Kreu / inlineScript ndihmës të parë).
Me rastin Unë kam gjetur nevojë për të bërë modifikimet e tag <body>, për shembull duke shtuar një onload , klasë, apo atribut etj stil kam kërkuar gjithashtu të jetë në gjendje për të kryer këtë nga brenda pikëpamje ndihmëtarë të tjera. Merrni këtë shembull pas ndërtuar ...
Në faqen e internetit e X, faqe të caktuara të përfshijë standarde dojo forma. Këto forma dojo mbahen brenda ndihmëtarë të parë për lehtësi. Përgjithësisht ajo ka qenë e vendosur të mos e përfshijë dojo CSS klasave në trup dhe tag vetëm të shtoni ato kur është e nevojshme. Ka disa pikëpamje ndihmëtarë ndoshta në faqe që kanë nevojë për të shtuar vetë atributet e tyre për të tag trupit. (I tha se ishte e ndërtuar)
Kodi është në dispozicion në Git time depo @ github dhe faqe demo .
How it works
Kur krijimin tag organi ndihmës të parë unë shpejt e kuptuan se shumica e kodit nuk është specifike për atë që unë u zhvilluar kështu që unë u larguan nga funksionet e zakonshme në një klasë abstrakte. Nga betonimit klasë abstrakte është e mundur për të ndryshuar ndonjë tag në të njëjtën mënyrë si organ tag diskutohet këtu kodin e bërë shumë më tepër versitile.
Nën kapuç (mënyrë që të flasin) Kodi është i bazuar në atë të * kokës dhe ndihmësit inlineScript pamje. Ajo përdor Zend_View_Helper_Placeholder_Container_Standalone për të ruajtur atributet dhe vlerat e tyre derisa ata janë të nevojshme. Enë vetë përdor Zend_Registry për të ruajtur vlerat nën kyçe të përcaktuara në klasë (në qoftë se ju shikoni në njësi teste kam të qartë të regjistrit poshtë pas çdo test).
Kodi do të përshtaten në të mirë me " Zend_Layout Naked dhe Zend_View "kodin e kam shkruar për nja dy javë më parë ose si pjesë e standardit Zend Kornizë MVC install.
Përdorim
Klasë duhet të jetë shumë e thjeshtë për t'u përdorur. Së pari dy shënimet janë të nevojshme brenda shkrimit tuaj layout si vijon:
<? Php echo $ this-> bodyTag ()?> <? Php echo $ this-> bodyTag () -> toString (Pro_View_Helper_AbstractTag:: CLOSE)?>
Shënim: Ju do të duhet të ndryshojë emrin e klasës ju duhet të shkojë ndihmës të parë në bibliotekën tuaj. Natyrisht konstante është në disponim nëpërmjet zbatimit (bodyTag), si dhe nëpër klasë abstrakte.
Një shembull të bërë ndryshime në trupin tuaj duke përdorur tag ndihmëtar synimin për jehonë myclass" <body class="nihilo style="text-align-left; width: 80em"> është:
<? Php $ This-> bodyTag ('klasa', 'nihilo') - BodyTag> ('stili', 'text-align: la') - BodyTag> ('Stili', 'width: 80em',, false, ';') - BodyTag> ('klasa', 'myclass') ?>
Kjo mund të bëhet në të gjithë dosjen e parë, në ndihmës të parë disa, dhe në dosjen e layout (me kusht që të saj para trupit tag është shkruar jashtë). Atributet mund të hiqet / vlerat overwritten ndërsa mund të jenë shtuar dhe bashkangjitur (ndarës mund të jetë i kaluar). Nëse të njëjtën vlerë atribut është kaluar disa herë vetëm një kopje të vetme është shkruar me atribut.
Për një demo të plotë ose pirun github depo dhe të drejtuar skedar demo.php në vet shfletuesin tuaj, ose ndryshe vizitoni këtë faqe për të parë atë në aksion. Perdorimi i demo.php shkrimit merr keni autoloader Zend (ose të ngjashme), tashmë setup.
Krijimin e vet ndihmues tuaj Tag
Për zbatimin e ndihmës tuaj të parë thjesht të zgjasë klasë abstrakte tag dhe prishësh vetitë e mëposhtme klasës:
- $ _regKey: Një çelës unik për tag (përdoret për Zend_Registry)
- $ _validAttributes: Një grup i emrave atribut i vlefshëm, duhet të jenë me të vogla në përputhje me W3C
- $ _selfClosing: Boolean vlerë për të përcaktuar nëse është e mbylljes vetë tag ose jo, p.sh. <br/>
- $ _tagName: Emri i tag (trupi dmth në këtë shembull)
Pra, në fund të kodit për ndihmës të parë bodyTag vetë, kompakt shumë e saj:
/ ** * Ndihmës Shiko për trupin tag * * @ autor Lloyd Watkin * @ * @ 21/08/2010 nga * paketë Pro @ subpackage ViewHelper * / class Pro_View_Helper_BodyTag shtrihet Pro_View_Helper_AbstractTag {/ ** * i regjistrit për placeholder * * @ * string var / e mbrojtura $ _regKey 'Pro_View_Helper_BodyTag' =; / ** * Cilat atribute janë të vlefshme * * Aktualisht vetëm STF atributet e mbështetur * (S = rreptë, T = KALIMTARE, F = frameset) * * @ shohin http://www * @ * .w3schools.com/tags/tag_body.asp var array / e mbrojtura $ _validAttributes = (array / * * Standard Atributet 'dir' 'klasës' /,, 'id', 'lang', 'stili', 'Titulli ',' xml : lang ', / * Event Atributet * /' 'onClick', ondblclick ',' onload ',' onmousedown ',' onmousemove ',' onmouseout ',' onmouseover ',' onmouseup ',' onkeydown ', 'onkeypress', 'onkeyup', 'onunload',); / ** Vetë * mbylljes tag? * @ * Var boolean * / _selfClosing mbrojtur $ = false; / ** * * * Emri Tag @ * string var / e mbrojtura $ _tagName 'trup';}
Nëse ju merrni një vështrim në depo ka gjithashtu një grup i testeve njësi që mbulojnë plotësisht funksionet. Testet e njësi janë të shkruara në PHPUnit dhe janë në BodyTagTest.php file.
Më në fund ...
Këtu unë kam treguar ju zbatimin e mia të një ndihmëtar abstrakt abstrakte tag parë (në javë) dhe tag saj trupin e zbatimit. Përderisa funksionalitetin e javascript mund të zbatohet në mënyra të tjera (përveç kodimit të vështirë në kohën e prodhimit) gjëra të tjera nuk mund të (pa JavaScript që është), pa ndryshuar pjesët e tjera të aplikimit. Unë shpresoj që ju të gjeni të klasave të dobishme në aplikimin tuaj ...



















































Linker im automagic ka shkaktuar mbi çështjen në kodin për XML pra ju lutemi të injorojë këtë çështje:)
[...] Origjinal këtu: Evilprofessor.co.uk »Zend Kornizë Trupi Tag Shiko Helper Nuk [...]
[...] Më shumë nga burimi origjinal: Evilprofessor.co.uk »Zend Kornizë Trupi Tag Shiko Helper Share dhe [...]