2012-04-18 62 views
0

我將如何在引導程序中分配頁面標題一次(所以我不必在每個控制器中執行)?有沒有一個鏈接能讓我指出正確的方向?Zend Framework - 每個控制器的相同標題

正在使用bootstrap的方法是否正確?

我現在有此在每個控制器中:

public function indexAction() 
{ 
    $this->view->title = 'Cut It Out'; 
} 

layout.phtml具有這樣的:

<h1><?php echo $this->escape($this->title); ?></h1> 
+1

我會說你的佈局腳本是做的地方。 – vascowhite 2012-04-18 09:43:45

+0

我可以硬編碼它,但標題最終將來自數據庫。 – beingalex 2012-04-18 09:45:51

+0

然後使用視圖助手,但佈局仍然是我要做的地方。 – vascowhite 2012-04-18 09:48:30

回答

2

你可以使用一個視圖助手此呼應標題到版式/ layout.phtml佈局腳本。

創建文件/application/views/helpers/SiteTitle.php: -

<?php 
class Zend_View_Helper_SiteTitle extends Zend_View_Helper_Abstract 
{ 
    public function siteTitle() 
    { 
     $siteTitle = getTitleFromDbSomehow(); 
     return $this->view->escape(siteTitle); 
    } 
} 

然後在你的佈局頭部分你必須: -

<title><?php echo $this->siteTitle(); ?></title> 

如果你想讓它在身體某處: -

<h1><?php echo $this->siteTitle(); ?></h1> 
+0

謝謝 - 我沒有如何創建幫手:)你的解決方案的作品。 – beingalex 2012-04-18 10:00:30

1

優選的方法是使用一個視圖助手:

在應用/視圖/幫手/ Title.php:

<?php 
class Zend_View_Helper_Title extends Zend_View_Helper_Abstract 
{ 
    public function title() 
    { 
     $title = 'cut it out'; // or from database 

     return $this->view->escape($title); 
    } 
} 

在你layout.phtml:

echo $this->title(); 

但是,如果必須使用引導程序(例如,你想在一個控制器動作覆蓋):

<?php 

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap 
{ 

    protected function _initTitle() 
    { 
     $this->bootstrap('layout'); 
     $layout = $this->getResource('layout'); 
     $view = $layout->getView(); 
     $view->title = 'Cut It Out'; 
    } 

} 
+0

謝謝你解釋。 – beingalex 2012-04-18 10:01:37

+0

@rob讀你的書讓我走上了成功使用ZF的道路。謝謝:) – vascowhite 2012-04-18 10:02:47

+0

我會說!我剛剛完成了PDF。必須拿到書。 – beingalex 2012-04-18 10:24:16

相關問題