如何在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']
。
答
我不关你的想法。但是,只需使用两个php文件即可完成此操作。
- )在
controller page.php
文件中,只需键入您的网站名称。 - )之后,包括这个控制器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
它应该采取一个数组。实际上,当我在** controller page.php **中var_dump'$ data'时,它甚至在那里返回null。但是,当我在'getPageTitle'方法中var_dump(它在同一个文件中)时,它的值就像它应该是。出于某种原因,在'index'方法中,'$ pageTitle'正在失去它的价值。 – user3628807
你是从'about.php'还是从别的地方调用'page.php - > index()'? – smtw