#php #zend-framework #zend-view #zend-layout
#php #zend-framework #zend-view #zend-layout
Вопрос:
Я запустил свой заголовок, за исключением того, что я не могу отобразить его в своем файле макета, поскольку он мне нужен для заголовка страницы.
Вот как я это сделал:
Bootstrap.php:
protected function _initDefaultHelpers() {
$this->bootstrap('view');
$view = $this->getResource('view');
$view->headTitle('Awesome Website');
$view->headTitle()->setSeparator(' - ');
Мой контроллер:
public function indexAction() {
$this->_helper->layout()->getView()->headTitle('IndexPage');
}
Когда я открываю индекс, я получаю: Потрясающий веб-сайт — IndexPage, который идеален.
Но в моем master.phtml, где я использую:
<?php echo $this->headTitle(); ?>
Абсолютно ничего не дает. На данный момент мне нужен только заголовок «IndexPage», а не весь заголовок, так что это также следует учитывать.
Заранее спасибо.
Ответ №1:
эта работа: протестирована мной локально после создания нового проекта с помощью zend tool!
//application.ini
[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Foo"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0
; layout stuff
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"
; view stuff
resources.view[] = ""
[staging : production]
[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1
//into Bootstrap.php
protected function _initDefaultHelpers() {
$this->bootstrap('view');
$view = $this->getResource('view');
$view->headTitle('Foo');
$view->headTitle()->setSeparator(' :: ');
$view->doctype("XHTML1_STRICT");
}
//в layout.phtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="it" xml:lang="it">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<?=$this->headTitle()?>
</head>
<body>
<?=$this->pageTitle?>
<?=$this->layout()->content?>
</body>
</html>
// в поле зрения
<? $this->pageTitle("Bar"); ?>
//создать view/helper/PageTitle.php
<?
class Zend_View_Helper_PageTitle extends Zend_View_Helper_Abstract
{
public function pageTitle($title)
{
$this->view->headTitle($title);
$this->view->pageTitle = '<h1>' . $title . '</h1>';
}
}
После этого название вашей страницы будет: Foo :: Bar
Комментарии:
1. Я получаю следующую ошибку из моего представления:
Fatal error: Call to a member function headTitle() on a non-object in /.../index.phtml