什么是PHP中的ASP.NET主视图?

时间:2009-11-19 23:51:51

标签: php asp.net asp.net-mvc

我习惯于在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的人能指出我正确的方向吗?

3 个答案:

答案 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 就像一个非常简单的控制器。