我习惯于在ASP.NET / ASP.NET MVC中工作,现在我必须创建一个PHP网站。
在PHP世界中,与ASP.NET的主视图相同的是什么?
理想情况下,我希望能够使用以下内容定义页面布局:
Master.php
<html>
<head>
<title>My WebSite</title>
<?php headcontent?>
</head>
<body>
<?php bodycontent?>
</body>
</html>
然后我的其他PHP页面继承自Master,所以我可以插入到那些预定义的位置。
这可以在PHP中使用吗?
现在我的页面上半部分定义为“Header.html”,下半部分是“footer.html”,我在我创建的每个页面上都包含了两个。但是,当我希望能够插入主页上的多个位置(例如能够将内容插入到头部)时,这并不理想。
熟练掌握PHP的人能指出我正确的方向吗?
答案 0 :(得分:0)
您可以使用Smarty或开发自己的模板引擎。 基本上你可以定义一个这样的简单布局:
layout.tpl:
<html>
<head>
<title>My WebSite</title>
{$header}
</head>
<body>
{$bodycontent}
</body>
</html>
定义标题:
header.tpl
<script type="text/javascript" src="js/myjs.js"></script>
和您的内容文件:
home.tpl
<div>hello {$var}! </div>
最后你的控制器:
的index.php
<?php
$header = new Smarty();
$headerOutput = $header->fetch('header.tpl');
$content = new Smarty();
$content->assign('var', 'world');
$contentOutput = $content->fetch('home.tpl');
$layout = new Smarty();
$layout->display('header', $headerOutput);
$layout->display('bodycontent', $contentOutput);
$layout->display('layout.tpl');
?>
答案 1 :(得分:0)
由于PHP是一种编程语言而不是框架,因此它没有开箱即用的功能。
这个问题有很多解决方案,可能最复杂的是实际使用框架。有many PHP frameworks可供选择。缺点是你要学习框架而不是PHP。
更简单的解决方案是使用Templating engine。你将更接近PHP,但你仍然需要学习如何使用这种引擎。
您已经在使用最简单的解决方案:包括主文件中的文件。您还可以包含将要执行的PHP文件,而不仅仅是静态html。
答案 2 :(得分:0)
如果您不想使用模板引擎,一个解决方案可能是这样的:
<html>
<head>
<title>My WebSite</title>
<?php include('headcontent'); ?>
</head>
<body>
<?php include('bodycontent'); ?>
</body>
</html>
在 bodycontent :
<?php
switch ($_GET['page'];
case 1:
include('page1');
break;
case 2:
include('page2');
break;
}
?>
bodycontent 就像一个非常简单的控制器。