2017-08-06 77 views
0

我正在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。有任何想法嗎?

回答

0

首先,嘗試 <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

0

我不關你的想法。但是,只需使用兩個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