php - 如何组成一个包含多个部分的视图,这些部分具有需要跨越的变量?
问题描述
我在同一个文件夹中有 2 个文件
布局.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
<?php $pageTitle = 'Welcome'; ?>
<h1>Content</h1>
如果我想组合这两个文件并正确渲染视图怎么办?对我来说,问题在于 $pageTitle 在 view.php 内部,并且 view.php 应该代替 layout.php 的“内容来了”
如何解决这个问题?
我尝试一个接一个地包含文件,但这并不好,因为无论首先包含哪个文件,它都会错过下一个包含文件中的变量。
解决方案
您可以将 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>
我希望,这就是你要的:)
推荐阅读
- java - 添加新项目时tableview不会自动更新
- xpath - xpath 在 IMPORTXML 公式中获取 2 个标签之间的文本
- c++ - Mingw / Boost / C++ - 使用 Boost Locale 时出现链接错误(未定义对 __imp_GetACP 的引用)
- c# - VS C# .Net Core WPF 应用程序中的 XAML 中的 TextBox 水印/占位符文本是否有标准解决方案?
- python - 如何在 python 3 中运行 tkinter
- opencv - 如何在 LBPH 算法(人脸识别)中从二进制转换为十进制?
- scala - 错误:value recallAt 不是 org.apache.spark.mllib.evaluation.RankingMetrics [Double] 的成员
- java - 类级别验证问题
- php - laravel 6中如何通过表单将数据存储到表中?
- firebase - 在android studio中构建flutter apk文件失败