Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何用多个部分组成一个视图,这些部分的变量需要跨越多个部分?_Php_View - Fatal编程技术网

Php 如何用多个部分组成一个视图,这些部分的变量需要跨越多个部分?

Php 如何用多个部分组成一个视图,这些部分的变量需要跨越多个部分?,php,view,Php,View,我在同一个文件夹中有两个文件 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-s

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

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是inside view.php 并且view.php应该取代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>
如何解决这个问题


我尝试过一个接一个地包含文件,但效果不好,因为无论先包含哪个文件,它都会丢失下一个包含文件中的变量。

您可以将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>


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

为什么需要在正文中设置页面标题?为什么这里需要两个单独的文件?不仅仅是页面标题。如果我能做到这一点,它将带来很大的灵活性。这只是一个更大想法的简单例子。我正在为学习目的构建自己的框架,并希望从其他框架复制一些非常高级的东西。