如何在php
中制作母版页?就像ASP.NET MVC中的Layout.cshtml
(和RenderBody()
)一样?
谢谢!
P.S。也许这是为了这个目的的第三方工具?
修改
确定。事情不是关于MVC架构!请看这里:http://jsfiddle.net/challenger/8qn22/109/
I want the master page/layout to stay when user gets redirected to the other page
Want an average page to be nested inside the content division
。 So if it is a form I want this form to be displayed like:
http://jsfiddle.net/challenger/XgFGb/17/ 答案 0 :(得分:6)
这是PHP标准框架/ api支持的内容:
require("/definitions.php")
函数从文件中加载类,函数和常量,并将PHP代码之外的内容输出到php:// stdout(在Web服务器上,这是发送到浏览器的内容)。您可能希望使用require_once
导入依赖项(带有定义的php文件)。
使用PHP的open和close标签获取与模板功能相近的内容。 例如,普通页面看起来像这样:
虽然包含(并且可重复包含)的内容可能如下所示:
我没有说"不使用模板引擎"只是展示了一种清晰简单的方法来实现PHP专门为之构建的内容。如果这足以满足您的需求,那么我会说"不要为了它而使用模板引擎" (顺便说一句,如果你很整洁,你可以轻松地将逻辑与视图分开,而不需要严格的,有时是繁琐的MVC框架)。
答案 1 :(得分:1)
副手,我知道Laravel framework包含Blade templating engine。它使用与Razor非常相似的语法。
示例:
@layout('master')
@section('navigation')
@parent
<li>Nav Item 3</li>
@endsection
@section('content')
Welcome to the profile page!
@endsection
( Razor,Blade,loller skates )
答案 2 :(得分:1)
在PHP中,有一种非常类似的模板技术。您有一个模板,而不是母版页。语言本身没有内置的模板功能,但有第三方模板引擎(Smarty,PHPTAL和XTemplate,仅举几例)。
如果您想拥有“真正的”母版页,完全可以实现它们。只需将您的母版页包装到一个类中,并将该类包含在您的内容页面中。
Zend Framework还支持两步视图,其中视图模板在布局模板中呈现。我认为这满足了您对母版页的需求。
请参阅以下链接:
答案 3 :(得分:1)
Twig模板引擎提供Template Inheritance
Twig最强大的部分是模板继承。模板继承允许您构建一个基础“框架”模板,其中包含您网站的所有常见元素,并定义子模板可以覆盖的块。
可以单独使用,但是由热门symfony framework背后的人制作。
答案 4 :(得分:1)
确定。这里描述了最适合我的解决方案http://www.phpro.org/tutorials/Introduction-to-PHP-templating.html#9。它容易,快速,并且不会强制您使用模板引擎。酷!
答案 5 :(得分:1)
不久前(几年),我使用Smarty实现了类似的功能,并将其扩展为包含DisplayMaster效果的方法(“NameOfTemplate”,“NameOfMasterTemplate”)
它的工作原理是渲染模板并将结果传递给另一个(主)模板。
以上有2个模板: NameOfTemplate,只有主要内容部分,例如
<div>...{$someProcessing}</div>
NameOfMasterTemplate具有外部html
<html>...<body><div class="layout">{$innerHtml}</div></body></html>
答案 6 :(得分:1)
在master.php文件的内容区域中添加这段代码... 我正在使用它,它完全适合我
<li><a href="master.php?page=blog.php">BLOG</a></li>
<div class="container content">
<?php
if(isset($_GET['page']))
{
$page_name = $_GET['page'];
include("/".$page_name);
}
?>
</div>