Zend Framework Consell d'etiqueta View Helper
Resum
Aquí es discuteix la creació d'un ajudant de vista per modificar les etiquetes HTML, i més específicament les etiquetes del cos. L'ajudant de vista creada permet una funcionalitat similar al cap * / veure ajudants inlineScript ja en l'estàndard de Zend Framework ajudants de vista, però permet la modificació de programació dels atributs d'etiquetes. Definitivament, fes un cop d'ull a la pàgina de demostració i el codi de GitHub.
La motivació
L'estàndard de Zend Framework ajudants de vista són un gran conjunt d'eines per a agilitzar les tasques mundanes vista i tenint en compte la modificació o addició de seqüència i blocs de capçalera (generalment en el disseny) des del punt de vista, sense aplicar hacks lleig (és a dir, el cap, * / inlineScript ajudants de vista).
De vegades he trobat necessitat de fer modificacions a l'etiqueta <body>, per exemple, l'addició d'un procés de càrrega , classe, etc o atribut d'estil que també ha de ser capaç de realitzar això des d'un altre punt de vista ajudants. Prengui aquest exemple se les següents ...
A la pàgina web X, certes pàgines, inclou de sèrie dojo formes. Aquestes formes dojo es duen a terme dins d'ajudants de vista per a més comoditat. En general, s'ha decidit no incloure el dojo CSS classes en l'etiqueta del cos i només afegir quan sigui necessari. Hi ha diversos ajudants vista potser a la pàgina que cal afegir els seus propis atributs a l'etiqueta del cos. (Em va dir que era artificial)
El codi està al meu repositori GIT disponible @ GitHub i la pàgina de prova .
Com funciona?
En crear l'etiqueta de cos ajudant de vista em vaig adonar que la major part del codi no és específic al que estava en desenvolupament, així que va treure la funcionalitat comú en una classe abstracta. En formigonar la classe abstracta que és possible modificar qualsevol etiqueta de la mateixa manera que el cos de l'etiqueta discutit aquí fent el codi molt més versàtil.
Per sota de la campana (per dir-ho) el codi està basat en el del cap, * i els ajudants de vista inlineScript. Utilitza Zend_View_Helper_Placeholder_Container_Standalone per emmagatzemar els atributs i els seus valors fins que siguin requerits. El mateix contenidor utilitza Zend_Registry per emmagatzemar els valors en la clau definits en la classe (si ens fixem en la unitat de proves puc esborrar el registre després de cada prova).
El codi encaixaria bé amb el " Nu i Zend_Layout Zend_View "codi vaig escriure sobre un parell de setmanes o com a part de la norma Zend Framework MVC instal lar.
Ús
La classe ha de ser molt fàcil d'utilitzar. En primer lloc dues entrades es requereixen dins del seu script de la següent manera:
<? Php echo $ this-> BodyTag ()?> <? Php echo $ this-> BodyTag () -> toString (Pro_View_Helper_AbstractTag:: TANCAR)?>
Nota: Vostè haurà de canviar el nom de classe ha de moure l'ajudant de vista a la seva pròpia biblioteca. És evident que la constant està disponible a través de l'aplicació (BodyTag), així com a través de la classe abstracta.
Un exemple de fer canvis en el seu cos de l'etiqueta amb l'ajudant de vista ressò de myclass "<body class="nihilo style="text-align-left; width: 80em"> és:
<? Php $ This-> BodyTag ('classe', 'nihilo') - BodyTag> ('estil', 'text-align: left') - BodyTag> ('estil', 'width: 80em', false, ';') - BodyTag> ('classe', 'MiClase') ?>
Això es pot fer tot l'arxiu de vista, en opinió de diversos ajudants, i en l'arxiu de disseny (sempre que el seu cos abans de l'etiqueta s'escriu). Els atributs poden ser remoguts / sobreescriure valors mentre es poden afegir i annexa (separador es pot passar). Si el valor d'aquest atribut es passa diverses vegades una sola còpia està escrita amb l'atribut.
Per a una demostració completa o la forquilla GitHub repositori i executar l'arxiu demo.php en el seu propi navegador, o, alternativament, visiteu aquesta pàgina per veure-ho en acció. L'ús de la demo.php script suposa que el autocarregador Zend (o similar) i la instal lació.
Creació del seu propi ajudant del tag
Per dur a terme el seu ajudant propi punt de vista simplement estendre la classe d'etiquetes abstractes i sobreescriure les propietats de classe següents:
- $ _regKey: Una clau única per al tag (utilitzat per Zend_Registry)
- $ _validAttributes: Una matriu de noms d'atributs vàlids, han d'estar en minúscules per complir amb el W3C
- $ _selfClosing: Valor booleà que especifica si l'etiqueta és de tancament automàtic o no, per exemple, <br/>
- $ _tagName: Nom de l'etiqueta (el cos és a dir, en aquest exemple)
Així que, finalment el codi per l'ajudant de vista BodyTag sí, és molt compacte:
/ ** * Veure ajuda per l'etiqueta body * * @ autor Lloyd Watkin des 2010.08.21 * @ * * paquet Pro @ @ subpaquete * ViewHelper Pro_View_Helper_BodyTag / classe s'estén Pro_View_Helper_AbstractTag {/ ** * la clau del Registre de marcador de posició * * @ * cadena var / protected $ _regKey = 'Pro_View_Helper_BodyTag'; / ** * Quins són els atributs * * En l'actualitat només vàlida STF atributs compatibles * (S = ESTRICTA, T = TRANSITÒRIES, m = conjunt de marcs) * * @ see http://www * * @ .w3schools.com/tags/tag_body.asp matriu var / protegides $ _validAttributes = array (/ * Standard * Atributs 'dir' / 'classe', 'id', 'lang', 'estil', 'títol »,« xml : lang ', / * Esdeveniment * Atributs /' onclick ',' ondblclick ',' onload ',' onmousedown ',' onmousemove ',' onmouseout "," onMouseOver "," onmouseup ',' onkeydown, "onkeypress", "onkeyup ',' onunload ',); / ** * Auto etiqueta de tancament? * * @ * Booleà var / _selfClosing protegits $ = false; / ** * Etiqueta nom * * @ * cadena var / protected $ _tagName = "cos";}
Si fes un cop d'ull al dipòsit també hi ha un grup de proves unitàries que cobreixen totalment la funcionalitat. Les proves unitàries s'escriuen en PHPUnit i són al BodyTagTest.php arxiu.
Finalment ...
Aquí he mostrat el meu implementació d'un ajudant de vista abstracte etiquetes abstractes (EEK) i la seva aplicació cos d'etiquetes. Mentre que la funcionalitat de JavaScript pot ser implementat en altres formes (que no sigui difícil de codificació en temps de sortida) altres coses no pot (sense javascript que és) sense canviar altres parts de la sol.licitud. Espero que les classes d'ajuda en la seva aplicació ...



















































El meu vinculador automagic ha causat el problema en el codi per a XML així que si us plau ignori aquest tema:)
[...] L'original aquí: Evilprofessor.co.uk »Zend Framework Consell d'etiqueta View Helper no [...]
[...] Més de la font original: Evilprofessor.co.uk »Zend Framework Consell d'etiqueta View Helper Compartir i [...]