我们正在构建一个应用程序,并希望将html部分与代码(php)部分分开,我们如何使用以下模板文件与PHP?
<h1>{$heading}</h1>
<p>{$content}</>
Run Code Online (Sandbox Code Playgroud)
和php代码如下......
<?php
$heading = $row['heading'];
$description = $row['content'];
?>
Run Code Online (Sandbox Code Playgroud)
我们如何包含tpl文件并使用它?谢谢.
事实上,那是不可用的模板系统.
想象一下,页面上会有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";
?>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
并且links.tpl.php是实际的页面模板:
<h2><?=$pagetitle?></h2>
<ul>
<? foreach($DATA as $row): ?>
<li><a href="<?=$row['link']?>" target="_blank"><?=$row['name']?></a></li>
<? endforeach ?>
<ul>
Run Code Online (Sandbox Code Playgroud)