繁体   English   中英

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

[英]Zend Framework: headTitle()->append() issue

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

在我的layout.phtml中,我有:

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

然后在index.phtml我有:

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

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

到底是怎么回事? 我怎样才能解决这个问题?

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

客户端列表

然后,使用第一个参数调用headTitle而没有第二个参数( 这使其默认为APPEND ),从而产生以下堆栈:

ClientListControl应用程序 -

解决方案,在layout.phtml中:

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

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

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

在您的controllers / actions / etc中使用标准append / prepend:

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

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

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

然后:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM