如何使用具有所需变量的多个部分组成视图?

问题描述 投票:0回答:1

我在同一个文件夹中有2个文件

layout.php中

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title><?= isset($pageTitle) ? $pageTitle : '' ?></title>
</head>
<body>

<nav>
    <ul>
        <li><a href="">Home</a></li>
        <li><a href="">About</a></li>
        <li><a href="">Contact</a></li>
    </ul>
</nav>

<div class="container">
    HERE COMES THE CONTENT
</div>

</body>
</html>

view.php

<?php $pageTitle = 'Welcome'; ?>

<h1>Content</h1>

如果我想组合这两个文件并正确渲染视图怎么办?对我来说问题的原因是$ pageTitle在view.php中,而view.php应该代替layout.php的“HERE COMES THE CONTENT”

怎么解决这个?

我尝试将这些文件一个接一个地包括在内但是它并不好,因为无论哪个文件首先包含它都会错过下一个包含文件中的变量。

我希望有人会理解这一点,并帮助我和其他人解决这样的问题。

php view
1个回答
1
投票

您可以将PHP和HTML文件合并为一个(但当然,它仍然需要正确处理.php扩展)并动态创建内容。

<?php
    // some PHP part
    $pageTitle = 'Welcome';
    $content = '<h1>Content</h1>';

    // OR, for dynamic load (separated files)
    ob_start();
    include_once('some/html/file.html'); /* or it could be another PHP file echoing content */
    $content = ob_get_contents();
    ob_end_clean();
?>

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title><?php echo (isset($pageTitle)) ? $pageTitle : ''; /* some other PHP part */ ?></title>
</head>
<body>

<nav>
    <ul>
        <li><a href="">Home</a></li>
        <li><a href="">About</a></li>
        <li><a href="">Contact</a></li>
    </ul>
</nav>

<div class="container">
    <?php echo $content; /* print the content */ ?>
</div>

</body>
</html>

我希望,这就是你要求的:)

© www.soinside.com 2019 - 2024. All rights reserved.