0

我如何在引导程序中分配一次页面标题(所以我不必在每个控制器中都这样做)?是否有链接可以为我指明正确的方向?

使用引导程序是否正确?

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

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

layout.phtml 有这个:

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

2 回答 2

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>
于 2012-04-18T09:58:53.527 回答
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();

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

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

}
于 2012-04-18T09:57:48.900 回答