[英]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.