如何在MVC项目中生成动态页面标题

问题描述:

我正在MVC中开发我的项目,并且希望生成动态页面标题。我的标题,内容和页脚分为3个不同的视图文件。我想从内容视图文件生成页面标题并将其传递给模型,然后将该模型传递给标题视图文件。我尝试了不同的东西,但都没有成功。这里是我的代码:如何在MVC项目中生成动态页面标题

控制器page.php文件

class Page extends Controller 
{ 

    public $pageTitle; 

    public function setPageTitle($title) 
    { 
     $this->pageTitle = $title; 
    } 

    public function getPageTitle() 
    { 
     return $this->pageTitle; 
    } 

    /** 
    * Open file from view/pages/ folder. 
    * @param String 
    */ 
    public function index($page = 'about') 
    { 
     if(!file_exists(ROOT.'/app/view/pages/'.$page.'.php')) 
     { 
      //redirect 404 
     } 
     $data['title'] = self::getPageTitle(); 

     $this->view('header', $data); 
     $this->view('pages/'.$page); 
     $this->view('footer'); 
    } 

} 

视图的header.php

<!DOCTYPE html> 
<html> 
<head> 
<title><?= $data['title'] ?></title> 
</head> 
<body> 

视图about.php

<?php 
    $controller = new Page; 
    $controller->setPageTitle('title of the page about us'); 
?> 
content about us, contact form, etc. 

$ data始终返回NULL。有任何想法吗?

首先,尝试 <title><?php echo $data['title']; ?></title> 如果不工作,确保在功能$this->view($arg, $arg2)第二个参数用于获取数据,是能够采取一个数组,并命名为$的数据。如果它被命名为其他(如$ arg2),则需要在模板heder.php中使用$arg2['title']

+0

它应该采取一个数组。实际上,当我在** controller page.php **中var_dump'$ data'时,它甚至在那里返回null。但是,当我在'getPageTitle'方法中var_dump(它在同一个文件中)时,它的值就像它应该是。出于某种原因,在'index'方法中,'$ pageTitle'正在失去它的价值。 – user3628807

+0

你是从'about.php'还是从别的地方调用'page.php - > index()'? – smtw

我不关你的想法。但是,只需使用两个php文件即可完成此操作。

  1. )在controller page.php文件中,只需键入您的网站名称。
  2. )之后,包括这个控制器page.php你想显示你的网站名称。

控制器page.php文件文件

Web Site Name 

header.php文件

<?php 
include("controller page.php") 
?> 

,或者你可以在controller page.php文件中使用此功能

<?php 

function Sitename() 
    { 
    $title = "Wisdom University"; 
    return $title; 
    } 

echo Sitename();  

?> 
+0

这不是我所需要的。我需要通过模型将'page.php'中的变量传递给'header.php'。 – user3628807