2009-02-06 35 views
8

有沒有人遇到這個問題......Zend框架:headTitle() - >追加()問題

在我layout.phtml我:

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

然後在index.phtml我有:

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

我想到的是,當我去我的索引行動,標題應該是「控制應用程序 - 客戶名單」,而是我有「客戶端列表控件的應用 - 」

這是怎麼回事?我怎樣才能解決這個問題?

回答

22

headTitle()的默認行爲是追加到堆棧。在layout.phtml調用headTitle()之前,你的籌碼是:

客戶端列表

然後,你叫headTitle的第一個參數,並沒有第二個參數(which makes it default to APPEND),導致下面的堆棧:

ClientListControl應用 -

的解決方案,在layout.phtml:

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

我不實際使用headTitle,但不要使用ZF,我只好在郵件列表上咋一看,這可能會解決問題:

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

然後:

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

這實際上會導致「客戶端列表 - 控制應用程序」而不是「控制應用程序 - 客戶端列表」。 – Andrew 2009-02-06 19:40:41

+0

OH,哎呀。那麼應該通過使用prepend而不是追加來修復(我已經更新了我的答案),但是在另一個答案中已經有了,所以請不要介意:-)。 – 2009-02-07 10:35:01

6

此外,您可以使用setPrefix方法在你的佈局,例如:

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

而在你的控制器/動作/等使用標準的附加/添加:

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

發生這種情況是因爲佈局是要執行的最後一個腳本。所以你實際上在標題的集合之前進行附加操作,以便沒有任何附加內容。 將主標題(控制應用程序)設置在控制器中。例如,我總是在initPlugin的predispatch動作中執行該操作,以便在任何其他控制器操作之前執行它,並且可以隨意追加或前置。

要使用這樣的插件,只是限定延伸Zend_Controller_Plugin_Abstract一個新的類,並定義一個函數preDispatch(Zend_Controller_Request_Abstract $請求),在那裏你可以把你的所有常見到的,整個站點的代碼,並進行登記這個插件只是把它放到你引導的controller的前面:$ controller-> registerPlugin(new InitPlugin());