Zend Framework Corpo Auxiliar Ver Tag

Por Watkin Steven Lloyd , sábado 21 de agosto de 2010 11:13
Photo from  http://www.flickr.com/photos/daniello/

Foto de http://www.flickr.com/photos/daniello/

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 ...

3 Responses to "Zend Framework Corpo Auxiliar Ver Tag"

  1. Meu vínculo automagic causou en cuestión no código XML para iso, ignorar esta cuestión:)

  2. [...] O orixinal aquí: Evilprofessor.co.uk »Zend Framework Corpo Tag View helper n º [...]

  3. [...] Máis da fonte orixinal: Evilprofessor.co.uk »Zend Framework Corpo Tag View helper Share e [...]

Deixe unha resposta













Panorama Tema por Themocracy

4 visitantes en liña agora
3 visitantes, 1 bots, 0 membros
Max visitantes hoxe: 13 ás 11:17 UTC
Este mes: 26 en 2011/07/05 12:35 UTC
Este ano: 130 en 28-03-2011 22:40 UTC
Todas as horas: 130 en 28-03-2011 10:40 UTC