-4

我怀疑在 php 页面中制作动态内容的最佳方式是什么。我必须这样做:

------------------------------
|           Header           |
------------------------------
|      menu    |  Dynamic    |
|              |  content    |
------------------------------

我把这段代码放在我的索引页的html内容之间。

<?php
    if(isset($_GET["page_content"]))
        include_once 'app/view/'.$_GET["page_content"].'.php';
?>

这包括我的索引页面内的 html 的某些部分,这使它成为“动态的”。另一方面,我认为页面的页眉和页脚是分开的,并包含在其他页面中。

我认为这些解决方案会更好,但不确定什么是最好的方法。

(我想在 php 中解决这个问题,而不是制作单页应用程序)

4

2 回答 2

2

制作模板和动态内容有几种好方法和坏方法。首先,您应该将代码分为模板、数据处理和这两者之间的连接。

模型视图控制器非常适合这一点。

对于您的观点,您可以使用纯 html + php 或模板系统,如smartyphpsavant等。我个人使用 smarty 是因为它简单且非常强大。

如果您不想使用 MVC,您可以创建自己的系统,例如使用 AJAX。该系统要求您在单击菜单项后创建 ajax 函数。

如果您想在客户端进行访问,请访问链接

最简单的解决方案是使用包含,但可以肯定的是,您不能将$_GET与包含一起使用是危险的更好的方法是将文件放在某种数组中,并且在 $_GET 中具有该数组的键。

$mods = array("music", "download", "main");

if(in_array($_GET['mod'], $mods))
{
   include('mods/'.$_GET['mod'].".php");
} 

你也可以在这里添加一些 preg_match 来喜欢 mod 应该只包含小写字母/[az]+/

另一个更好的解决方案

$mod = intval($_GET['mod'], 0)
$mods = array(1 => "music", 2 => "download", 3=> "main");
if(!$mod) throw new Exception("Bad module");
if(array_key_exists($mod, $mods)) 
   include("mods/".$mods[$mod].".php");
else 
   if(!$mod) throw new Exception("The module does not exists");

但是,最好的解决方案是使用某种框架,例如 Zend,它已经编写了类来处理这个问题,称为Zend View

于 2013-05-09T07:26:58.223 回答
0

您应该研究与 php 一起使用的模板系统。例如SmartyZend_Framework是一些使用模板的方法。

于 2013-05-09T07:18:54.083 回答