Php 如何用多个部分组成一个视图,这些部分的变量需要跨越多个部分?
我在同一个文件夹中有两个文件 layout.phpPhp 如何用多个部分组成一个视图,这些部分的变量需要跨越多个部分?,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
<!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>
我希望,这就是您的要求:)为什么需要在正文中设置页面标题?为什么这里需要两个单独的文件?不仅仅是页面标题。如果我能做到这一点,它将带来很大的灵活性。这只是一个更大想法的简单例子。我正在为学习目的构建自己的框架,并希望从其他框架复制一些非常高级的东西。