我们正在构建一个应用程序,并希望将html部分与代码(php)部分分开,我们如何使用以下模板文件与php?
<h1>{$heading}</h1>
<p>{$content}</>
PHP代码如下......
<?php
$heading = $row['heading'];
$description = $row['content'];
?>
我们如何包含tpl文件并使用它?感谢。
答案 0 :(得分:6)
事实上,那是不可用的模板系统。
想象一下,页面上会有20个标题和20个描述吗?要写出来吗?然后HTML改变了,你将不得不改变它20次?这种模板没有任何好处。
事实上,将HTML与PHP 分离没有任何理由。
业务逻辑应与表示逻辑分开,因为您无论如何都必须在模板中使用某些逻辑。 PHP和其他任何模板语言一样好用。
只需将您的代码分为两部分:获取数据部分和显示部分。
让您的常规PHP页面获取所有必需的数据,然后为此数据定义模板,然后调用主站点模板,这将呈现整个页面。
嗯,这是一个这种分离的粗略例子
想象一下,您有links.php
页面包含友情网站的链接。此页面应获取所有必需的数据,然后调用模板:
<?
//include our settings, connect to database etc.
include dirname($_SERVER['DOCUMENT_ROOT']).'/cfg/settings.php';
//getting required data
$DATA=dbgetarr("SELECT * FROM links");
$pagetitle = "Links to friend sites";
//etc
//and then call a template:
$tpl = "links.tpl.php";
include "main.tpl.php";
?>
其中main.tpl.php
是您的主要网站模板,包括常见部分,如页眉,页脚,菜单等:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>My site. <?=$pagetitle?></title>
</head>
<body>
<div id="page">
<? include $tpl ?>
</div>
</body>
</html>
和links.tpl.php
是实际的页面模板:
<h2><?=$pagetitle?></h2>
<ul>
<? foreach($DATA as $row): ?>
<li><a href="<?=$row['link']?>" target="_blank"><?=$row['name']?></a></li>
<? endforeach ?>
<ul>
答案 1 :(得分:0)
除非您有充分的理由,否则不应重写经过验证的现有功能。该标记与Smarty非常相似。看看这个:http://www.smarty.net/
如果要重写它,那么您可能需要查看输出缓冲。或者您可以创建自己的视图框架,在其中将变量设置为视图对象,并为您执行所有代码/范围管理ala Zend,CakePHP