Zend Framework:headTitle() - > append()问题

时间:2009-02-06 18:21:22

标签: zend-framework

有没有人遇到这个问题...

在我的layout.phtml中,我有:

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

然后在index.phtml中我有:

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

我希望,当我进行索引操作时,标题应为“控制应用程序 - 客户端列表”,而是“客户端列表控制应用程序 - ”

发生了什么事?我该如何解决这个问题?

4 个答案:

答案 0 :(得分:22)

headTitle()的默认行为是追加到堆栈。在layout.phtml中调用headTitle()之前,您的堆栈是:

  

客户端列表

然后,使用第一个参数调用headTitle而没有第二个参数(which makes it default to APPEND),从而产生以下堆栈:

  

ClientListControl应用程序 -

解决方案,在layout.phtml中:

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

答案 1 :(得分:6)

此外,您可以在布局中使用setPrefix方法:

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

在你的控制器/动作/等中使用标准追加/前置:

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

答案 2 :(得分:2)

我实际上并没有使用headTitle,而是使用ZF,我快速查看邮件列表,这可能会解决问题:

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

然后:

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

答案 3 :(得分:0)

这是因为布局是要执行的最后一个脚本。所以你实际上在标题集之前进行追加,这样就没有什么可以追加了。 在Controller中设置主标题(Control Application)。例如,我总是在initPlugin的predispatch操作中执行它,以便它在任何其他Controller Action之前执行,并且我可以随意附加或前置。

要使用这样的插件,只需定义一个新的类扩展 Zend_Controller_Plugin_Abstract 并定义一个函数preDispatch( Zend_Controller_Request_Abstract $ request),您可以在其中放置所有的共同点到-whole-site代码,并注册插件只需将其放入bootstrap的controllerFront:$ controller-&gt; registerPlugin(new InitPlugin());