5

如何制作母版页php?像ASP.NET MVC 中的Layout.cshtml(and )?RenderBody()

谢谢!

PS也许有第三方工具可以达到这个目的?

编辑

行。问题与 MVC 架构无关!请看这里:http: //jsfiddle.net/challenge/8qn22/109/

  1. I want the master page/layout to stay when user gets redirected to the other page
  2. 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/challenge/XgFGb/17/
4

7 回答 7

6

以下是 PHP 标准框架/api 支持的内容:

require("/definitions.php")函数从文件加载类、函数和常量定义,并将 PHP 代码之外的内容输出到 php://stdout(在网络服务器上,这是发送到浏览器的内容)。您可能想require_once用于导入依赖项(带有定义的 php 文件)。

使用 PHP 的打开和关闭标签来获得接近模板功能的东西。例如,普通页面如下所示: 普通页面

而一个包含(并且可重复包含)的可能看起来像这样: 在此处输入图像描述

我并不是说“不要使用模板引擎”,只是展示了一种清晰而简单的方式来实现 PHP 专门为之构建的目标。如果这足以满足您的需求,那么我会说“不要为了它而使用模板引擎”(顺便说一句,如果您很整洁,您可以轻松地将逻辑与视图分离,而无需严格且有时繁琐的 MVC 框架)。

于 2012-05-22T15:36:36.703 回答
1

顺便说一下,我知道Laravel 框架包括Blade 模板引擎。它使用与 Razor 非常相似的语法。

例子:

@layout('master')

@section('navigation')
    @parent
    <li>Nav Item 3</li>
@endsection

@section('content')
    Welcome to the profile page!
@endsection

剃须刀、刀片、懒人溜冰鞋

于 2012-05-18T13:53:16.633 回答
1

在 PHP 中,有一种非常相似的技术,称为模板。您有一个模板,而不是一个母版页。该语言本身没有内置模板功能,但有第三方模板引擎(Smarty、PHPTAL 和 XTemplate 等等)。

如果您想拥有“真正的”母版页,完全可以实现它们。只需将您的母版页包装到一个类中,然后将该类包含()到您的内容页面中。

Zend Framework 还支持两步视图,其中视图模板在布局模板中呈现。我认为这可以满足您对母版页的需求。

请参阅以下链接:

  1. PHP 中的近似母版页
  2. CodeIgniter 框架上有类似 MasterPages 的东西吗?
  3. ASP.NET 中母版页的 PHP 等效项
  4. ASP.Net MVC 或 Zend 框架。你有什么意见
  5. http://hoolihan.net/blog-tim/2008/09/24/simple-masterpages-with-php/
于 2012-05-22T09:23:56.363 回答
1

Twig 模板引擎提供模板继承

Twig 最强大的部分是模板继承。模板继承允许您构建一个基本“骨架”模板,该模板包含您网站的所有常见元素并定义子模板可以覆盖的块。

可以独立使用,但由流行的symfony 框架背后的人制作。

于 2012-05-22T15:42:53.740 回答
1

行。此处描述了最适合我的解决方案http://www.phpro.org/tutorials/Introduction-to-PHP-templating.html#9。它易于实现、快速实现,并且不会强制您使用模板引擎。凉爽的!

于 2012-05-23T05:20:28.527 回答
1

不久前(几年),我使用 Smarty 实现了类似的功能,并将其扩展为包含 DisplayMaster("NameOfTemplate", "NameOfMasterTemplate") 效果的方法

它通过渲染模板并将结果传递到另一个(主)模板来工作。

上面有 2 个模板:NameOfTemplate,只有主要内容部分,例如

<div>...{$someProcessing}</div>

NameOfMasterTemplate 具有外部 html

<html>...<body><div class="layout">{$innerHtml}</div></body></html>
于 2012-05-28T03:30:41.773 回答
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>  
于 2017-05-22T07:05:03.167 回答