有没有人遇到这个问题...
在我的layout.phtml中,我有:
<head>
<?= $this->headTitle('Control Application - ') ?>
</head>
然后在index.phtml中我有:
<? $this->headTitle()->append('Client List'); ?>
我希望,当我进行索引操作时,标题应为“控制应用程序 - 客户端列表”,而是“客户端列表控制应用程序 - ”
发生了什么事?我该如何解决这个问题?
答案 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());