PHP/HTML 结构方式


PHP/HTML structural way

我有一个示例索引.php页面,如下所示:

<?php
Define("_DEF",1);
require_once "database.php";
require_once "session.php";
require_once 'functions.php';
if (isset($_GET['logout'])) {
    $session->logout();
} else if (isset($_GET['add'])) {
    $addFlag = 1;
}

if(!$session->is_logged_in())
    redirect_to("login.php");

?> 
<html>
<header>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap-theme.min.css">

</header>
<head>
    <link href='http://fonts.googleapis.com/css?family=Droid+Sans' rel='stylesheet' type='text/css'>
    <meta charset="utf-8">
    <title>Messaging Panel</title>
    <link href="style_index.css" media="screen" rel="stylesheet" type="text/css" />
    <link href="iconic.css" media="screen" rel="stylesheet" type="text/css" />
    <script src="prefix-free.js"></script>
</head>
<body>
    <div class="wrap">
        <nav>
            <ul class="menu">
                <li><a href="#"><span class="iconic home"></span> Home</a></li>
                <li><a href="index.php?add"><span class="iconic plus-alt"></span> New Message</a></li>
                <li><a href="#"><span class="iconic mail"></span> List Messages</a></li>
                <li><a href="index.php?logout"><span class="iconic user"></span> Logout</a></li>
            </ul>
            <div class="clearfix"></div>
        </nav>
    </div>
    <?php if (isset($addFlag) && $addFlag==1){ ?>
        <h3>Add Message HTML Goes Here!</h3>
    <?php } 
</body>
</html>

我有几个用于不同操作的HTML表单。 例如,当用户调用index.php?add时,我想显示一个自定义表单以将新消息添加到我的数据库中。
如果我要在index.php中执行多个操作,我可以播种的当前代码将非常复杂,并且它看起来像一个难以调试的大 if-else 结构。我想知道是否有任何结构化方法可以为每种情况提供特定的 HTML,然后根据 PHP 变量状态包含它?目前我知道我可以调用一个函数来使用 echo HTML_TAGs 显示表单,但是是否有任何方法可以将 HTML 表单放在单独的文件中,并且 php 函数根据传递的变量将其带到 HTML?
我的主要目标是为每种情况建立一个文件结构(一个用于添加记录,一个用于列表记录,...
注意:目前我对jQuery一无所知。所以我寻找简单的HTML + PHP解决方案!:)

您可以使用

require_once,require,include和include_once

示例表单

添加表单.php

<form action="tosend.php">
  <!-- Sample elements here -->
  <input type="text" name=""/>
</form>

然后在要包含HTML文件的PHP文件中,只需使用require_once或include_once

样本

if(condition){
   //condition is meet include the form
   include_once('location/addForm.php');
}else{
   include_once('includeAnotherForm.php');
}

您可以在不同的文件中使用 HTML 元素。您可以require('file.ext')显示该页面。

<?php
require(__DIR__.'/header.php');
if (isset($_REQUEST['page']) && file_exists(__DIR__."/pages/{$_REQUEST['page']}")) {
    require(__DIR__."/pages/{$_REQUEST['page']}.php");
} else {
    require(__DIR__."/pages/home.php");
}
require(__DIR__.'footer.php');
?>

就个人而言,因为您已经有单独的文件用于session.php等。我可能还会编写一个view.php,具有以下设置:

function view($name)
{
    $parts = explode('.', $name);
    $template = '/views/' . implode('/', $parts) . '.php';
    require_once __DIR__ . $template;
}

然后你可以这样使用它,将所有视图文件存储在./views目录中:

require_once './view.php';
view('home.message'); // {path}.{to}.{file} => /{path}/{to}/{file}.php

如果您愿意,也可以将其编写为类。

PS - 上面的这段代码没有经过测试,但原理是合理的,旨在创建一个这样的视图文件:

<!DOCTYPE html>
<html>
<head>
    <?php view('layout.head'); ?>
</head>
<body>
    <div class="wrap">
        <?php view('layout.menu'); ?>
    </div>
    <!-- load conditionally -->
    <?php if (isset($addFlag) && $addFlag == 1) view('add.message'); ?>
    <?php view('layout.footer') ?>
</body>
</html>

我应该足够简单地使用 INCLUDE 语句。