关于PHP模板和控制器文件的问题

Question about PHP template and controller files

提问人:Elisos 提问时间:10/23/2023 最后编辑:Elisos 更新时间:10/23/2023 访问量:36

问:

首先,我提前为这个问题道歉。我正处于PHP和SQL学习的最初阶段,感到无可救药地陷入困境。我必须创建以下内容:

  1. 一个简单的网站,包括登陆页面、图库页面和联系页面
  2. 所有标头都应共享一个通用的刊头页眉和页脚
  3. 每个页面都需要有一个 PHP 控制器文件;标题、标题等数据需要在变量中设置。
  4. 对于每种类型的页面,都应该有一个用于 HTML 输出的主模板,而这些模板又将包含较小的页面部分。(对于此练习,所有数据都可以被认为是安全的,因此无需过滤和转义)

到目前为止,我所做的是: index.php文件包含:

**
<?php
$page = isset($_GET['page']) ? $_GET['page'] : 'home';

switch ($page) {
    case 'gallery':
        include 'galleryController.php';
        break;
    case 'form':
        include 'formController.php';
        break;
    default:
        include 'homeController.php';
        break;
    }
?>
<?php include 'template.php'; ?>**

然后模板.php文件包含:

**
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="css/style.css" rel="stylesheet" type="text/css">
    <title><?php echo $title; ?></title>
</head>

<body>

    <!--header section-->
    <?php include 'header.php'; ?>

    <!--content section-->
    <?php include $content; ?>

    <!--footer section-->
    <?php include 'footer.php'; ?>

</body>

</html>**

例如页脚:

**
<!--footer section-->
<footer class="footer">
    <div class="social-icon">
        <a href="https://www.facebook.com"><img src="Icons/facebook.png" alt="Studio Apartment Facebook account"></a>
        <a href="https://www.instagram.com"><img src="Icons/instagram.png" alt="Studio Apartment Instagram account"></a>
    </div>

    <section class="newsletter-signup">
        <h3>Sign up for newsletter!</h3>
            <form class="newsletter-form" action="form.php" method="POST" id="theForm" autocomplete="on">
                <input type="text" placeholder="Enter your email" name="email" id="email" required>
                <button type="submit" value="Send" id="submit">Sign up</button>
            </form>
    </section>
</footer>**

虽然我上面所做的工作有效并且我通过了这项任务,但它在技术上仍然是错误的,我想修复它(更重要的是了解问题所在)以便继续前进。我得到的反馈是,我需要将模板文件中的页脚设置为变量,并且模板文件应该是 php,变量中带有 html(例如 $head“ 和 ”$title“)。我正在观看多个教程,并了解到要在模板文件中设置变量,我会写如下内容:

<footer><?php echo htmlspecialchars($footerVariable, ENT_QUOTES, 'UTF-8'); ?></footer>

然后在控制器文件中设置 footerVariable? 但是,在变量中没有 html 的 php 模板。此外,我对如何在变量中设置整个页脚部分感到非常困惑。 无论如何,正如你所看到的,我让自己对这一切感到非常困惑。请帮忙。:)

PHP 模板 控制器

评论

0赞 CBroe 10/23/2023
我不明白为什么整个页脚内容应该放在这里的变量中,看不出这有多大意义。“模板文件应该是 php,变量中带有 html(例如 $head” 和 “$title”)“ - 无法判断显示的页脚的哪些部分应该是”动态“的,所以我不知道你想在哪里插入任何变量。
0赞 Chris Haas 10/24/2023
对于这种模式,您基本上依赖于一堆全局变量,例如 .我会在控制器中设置一些默认值,然后在控制器中覆盖它们。另外,对我来说有点奇怪。每个“控制器”是否还指定要加载的其他模板?控制器可以自动处理吗,而只是在文件中设置可以设置的内容?$titleindex.phpinclude $content;echoindex.php

答: 暂无答案