我正在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。有什么想法吗?
答案 0 :(得分:0)
首先,试试
<title><?php echo $data['title']; ?></title>
如果这不起作用,请确保在函数$this->view($arg, $arg2)
中第二个参数用于获取数据,能够获取数组并命名为$ data。如果它被命名为other(例如$ arg2),则需要在模板heder.php中使用$arg2['title']
。
答案 1 :(得分:0)
我不是关于你的想法。但是,您只需使用两个php文件即可。
controller page.php
文件中,只需输入您的网站名称。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();
?>