Zend Framework Corpo Auxiliar Ver Tag
Resumo
Aquí vou discutir a creación dun axudante de exhibición para modificar as etiquetas HTML, e máis especificamente as marcas do corpo. O axudante vista creada permite unha funcionalidade similar á cabeza * / view Helpers InlineScript xa o estándar Zend Framework axudantes de vista, pero permite a modificación de programación de atributos de etiquetas. En definitiva, vaia á páxina de demostración eo código no github.
Motivación
O padrón do Zend Framework son axudantes ver un gran conxunto de ferramentas para simplificar tarefas de vista mundano e permitindo a modificación / adición de guións e bloques de cabeceira (xeralmente celebrado no esquema) dentro do vista sen aplicación de gambiarras (é dicir, a cabeza * / InlineScript axudantes vista).
De cando en vez podo atopar necesidade de facer trocos no <BODY>, por exemplo, engadindo un onload , clase ou atributo de estilo, etc Eu tamén deben ser capaces de realizar isto a partir de axudantes outra visión. Tome este exemplo a seguir inventada ...
Na páxina web X, inclúen certas páxinas estándar dojo formas. Estas formas dojo son mantidos dentro de axudantes vista por conveniencia. En xeral, se decidiu non incluír o dojo CSS clases na etiqueta do corpo e só engadir los cando é necesario. Hai ver varios axudantes quizais na páxina que precisa engadir os seus propios atributos para a etiqueta body. (Eu dixen que era artificial)
O código está dispoñible no meu repositorio GIT @ github ea páxina de demostración .
Como funciona
Ao crear o corpo do axudante vista tag Logo entender que a maioría do código non era específico para o que eu estaba a desenvolver así que eu retirei a funcionalidade común nunha clase abstracta. Por concretagem da clase abstracta se pode modificar calquera tag do mesmo xeito que o corpo da tag discutido aquí facer o código moito máis flexible.
Debaixo do capo (por así dicir), o código está baseado no criterio da Cabeza e os axudantes vista InlineScript. Utiliza Zend_View_Helper_Placeholder_Container_Standalone para almacenar os atributos e os seus valores ata que son necesarios. O recipiente propio usa Zend_Registry para almacenar valores baixo a clave definida na clase (se ollar os probas de unidade eu limpo o rexistro para abaixo despois de cada proba).
O código que se encaixan ben co " Naked Zend_Layout e Zend_View "código que escribín sobre un par de semanas, ou como parte do padrón do Zend Framework MVC instalar.
Uso
A clase debe ser moi sinxelos. En primeiro lugar dúas entradas son necesarias dentro do seu programa de deseño como segue:
<? PHP echo $ this-> bodyTag (?)> <? PHP echo $ this-> bodyTag () -> toString (Pro_View_Helper_AbstractTag: CLOSE)?>
Nota: Vai ter para cambiar o nome da clase que ten que cambiar o axudante para a súa propia biblioteca. Por suposto, a constante está dispoñible a través da implantación (bodyTag), así como a través da clase abstracta.
Un exemplo de facer cambios no seu corpo tag usando o view helper ecoar myclass "class =" nihilismo <BODY style="text-align-left; width: 80em"> é:
<? PHP $ This-> bodyTag ('class', 'nihilismo ") -> BodyTag ('estilo', 'text-align: left') -> BodyTag ('estilo', 'width: 80em', false, ';') -> BodyTag ('class', 'MyClass') ?>
Isto pódese facer todo o arquivo de vista, ver varios axudantes, e no arquivo de deseño (sempre que a súa antes da etiqueta body está escrito). Atributos poden ser eliminados ou substituídos, mentres que os valores poden ser engadidos e adxunto (ficha pode transmitir). Se o valor do mesmo atributo é pasado varias veces só unha única copia é escrita co atributo.
Para unha demostración completa ou o garfo github repositorio e executar o ficheiro demo.php no seu propio navegador, ou, alternativamente, visite esta páxina para velo en acción. Uso do demo.php script asume que ten o Autoloader Zend (ou similar) xa configurada.
Crear a súa propia helper Tag
Para aplicar o seu axudante propia visión basta extender a clase abstracta tag e substituír as propiedades da clase a continuación:
- $ _regKey: Unha chave exclusiva para a marca (usados para Zend_Registry)
- $ _validAttributes: Unha matriz de nomes de atributos válidos, debe ser pequeno para dar cumprimento á W3C
- $ _selfClosing: Valor booleano que especifique a marca é de peche automático ou non, por exemplo, <br/>
- $ _tagName: Nome da marca (o corpo é dicir, neste exemplo)
Entón, finalmente, o código ao ver a helper bodyTag si, é moi compacto:
/ ** * Ver auxiliar para a etiqueta body * * @ author Lloyd Watkin * @ since 21/08/2010 * * Paquete Pro @ @ * subpackage ViewHelper Pro_View_Helper_BodyTag / clase estende Pro_View_Helper_AbstractTag {/ ** * A clave do Rexistro para espazo reservado * @ * cadea var / protected $ _regKey = 'Pro_View_Helper_BodyTag, / ** * Cales atributos son válidos * Actualmente só o STF atributos soportados * (S = Obxectivo, T = Transitórias, F = FRAMESET) * * @ see http://www * * @ .w3schools.com/tags/tag_body.asp array var / protected $ _validAttributes = array (/ * Standard * Atributos 'dir' / 'clase', 'id', 'lang', 'estilo', 'título ',' xml : lang ", / * Evento * Atributos / ',' ondblclick onclick ',' onload ',' onmousedown ',' onmousemove ',' onmouseout ',' onmouseover ',' onmouseup ',' onkeydown", 'onkeypress', 'onkeyup', 'onunload'), / ** * marca de peche de auto? * * @ Var booleano / _selfClosing protected $ = false, / ** * O nome da marca * * @ var cadea / protected $ _tagName = "corpo";}
Se der un ollo ao depósito, hai tamén un grupo de probas de unidade que cubrir totalmente a funcionalidade. As probas de unidade están escritos en PHPUnit e están no BodyTagTest.php arquivo.
Finalmente ...
Aquí che mostre a miña implantación dun resumo view helper tag abstracto (EEK) ea súa implementación tag body. Aínda que a funcionalidade JavaScript pode ser aplicado en outras formas (que non dura a codificación en tempo de produción) outras cousas, non pode (sen JavaScript), sen cambiar outras partes da aplicación. Espero que atope as clases útiles na súa aplicación ...



















































Meu vínculo automagic causou en cuestión no código XML para iso, ignorar esta cuestión:)
[...] O orixinal aquí: Evilprofessor.co.uk »Zend Framework Corpo Tag View helper n º [...]
[...] Máis da fonte orixinal: Evilprofessor.co.uk »Zend Framework Corpo Tag View helper Share e [...]