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

时间:2017-08-06 16:16:23

标签: php model-view-controller

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

controller 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。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我不是关于你的想法。但是,您只需使用两个php文件即可。

  1. )在controller page.php文件中,只需输入您的网站名称。
  2. )之后包含此控制器page.php,您希望显示您的站点名称。
  3.   

    controller 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();    
    
    ?>