2009-02-06 10 views
8

Cualquier persona ha funcionado en este problema ...Zend Framework: headTitle() -> append() tema

En mi layout.phtml que tengo:

<head> 
    <?= $this->headTitle('Control Application - ') ?> 
</head> 

después en index.phtml que tienen :

<? $this->headTitle()->append('Client List'); ?> 

espero que, cuando voy a mi acción index, el título debería ser 'control de aplicaciones - Lista de Clientes' pero en cambio tengo 'ListControl aplicación de cliente -'

¿Qué está pasando? ¿Cómo puedo arreglar esto?

Respuesta

22

El comportamiento predeterminado de headTitle() es agregar a la pila. Antes de llamar a headTitle() en layout.phtml, su pila es:

Clientlist

A continuación, se llaman headTitle con el primer argumento y no hay segundo argumento (which makes it default to APPEND), dando como resultado la pila siguiente:

Aplicación ClientListControl -

El solución, en layout.phtml:

<?php 
    $this->headTitle()->prepend('Control Application -'); 
    echo $this->headTitle(); 
?> 
+0

¿Cómo es eso en ZendFramework 2.0 por favor? (dado ejemplo, esto no funciona) – YumYumYum

2

Yo en realidad no utilizar headTitle, pero si use ZF, y yo tenía un vistazo rápido en la lista de correo, esto podría resolver el problema:

<head> 
    <?= $this->headTitle('Control Application') ?> 
</head> 

continuación:

<?php 
$this->headTitle()->setSeparator(' - '); 
$this->headTitle()->prepend('Client List'); 
?> 
+0

esto realmente da como resultado 'Lista de clientes - Aplicación de control' en lugar de 'Aplicación de control - Lista de clientes'. – Andrew

+0

OH, oops.Bueno, eso debería arreglarse usando prepend en lugar de append (he actualizado mi respuesta), pero ya lo tienes en otra respuesta, así que no te preocupes :-). –

6

Además, puede utilizar el método setPrefix en su diseño como tal:

<head> 
    <?= $this->headTitle()->setPrefix('Control Application') ?> 
</head> 

Y en sus controladores/acciones/etc utilizar el estándar Agregar/Preagregar :

<?php 
$this->headTitle()->setSeparator(' - '); 
$this->headTitle()->append('Client List'); 
?> 
0

Esto ocurre porque el diseño es el último script que se ejecutará. Entonces, realmente haces el apéndice ANTES del conjunto del título, de modo que no hay nada para agregar todavía. Establezca el título principal (Aplicación de control) en un Controlador. Por ejemplo, siempre lo hago en la acción predispatch de un initPlugin para que se ejecute antes de cualquier otra Acción del Controlador, y puedo adjuntarlo o anteponerlo a voluntad.

Para usar un plugin como acaba de definir una nueva clase que se extiende Zend_Controller_Plugin_Abstract y definir un preDispatch función (Zend_Controller_Request_Abstract $ solicitud) donde se puede colocar todo el código común a la de todo el sitio, y para registrarse el complemento simplemente lo coloca en el controlador Frente a su arranque: $ controller-> registerPlugin (new InitPlugin());