Zend Framework - 每个控制器的标题相同

时间:2012-04-18 09:41:21

标签: php zend-framework layout bootstrapping

如何在引导程序中分配一次页面标题(所以我不必在每个控制器中执行此操作)?是否有指向正确方向的链接?

正在使用引导程序吗?

我目前在每个控制器中都有这个:

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

layout.phtml有这个:

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

2 个答案:

答案 0 :(得分:2)

您可以使用视图助手将标题回显到layouts / 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>

答案 1 :(得分:1)

首选方法是使用视图助手:

在application / views / helpers / 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();

但是,如果必须使用Bootstrap(例如,您想在控制器操作中覆盖):

<?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';
    }

}