我有一个通过我的ClassPage创建的简单模板。该类被调用并从文本文件中读取html代码。在导航内部我想要回显一个PHP变量,但我得到的是嵌入式php在浏览器的控制台上注释掉了吗? 我想也许正在阅读的文件没有被服务器处理,这就是为什么php没有被处理?或者我错过了一些非常简单的事情?
下面是代码: ClassPage - > getBody获取名为" superNav.txt"的文件。返回的字符串与所需的HTML头标记等放在一起然后输出。
private function getBody() {
$text = "";
if ($this->specialUser) {
$text .= file_get_contents("Template/superNav.txt");
} else {
$text .= file_get_contents("Template/userNav.txt");
}
return $text;
}
这是文本文件:
<body>
<nav class="navbar navbar-inverse">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar"> <span id="glyph" class="glyphicon glyphicon-th-large"></span></button>
<a class="navbar-brand" href="#"><img alt="brand" id="brandLogo" src="Images/logo.png"></a>
<p id="navbarText" class="navbar-text">Webmin</p>
</div>
<div class="collapse navbar-collapse" id="myNavbar">
<ul class="nav navbar-nav">
<li><a href="welcome-super.php">Home</a></li>
<li><a href="view-rota.php">Rota</a></li>
<li><a href="rota-administration.php">Rota Admin</a></li>
<li><a href="user-administration.html">User Admin</a></li>
<li><a href="rota-archive.php">Archive</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="my-account.php"><span class="glyphicon glyphicon-user"></span><?php echo $user->getName(); ?></a></li>
<li><a href="#"><span class="glyphicon glyphicon-log-out"></span> Log Out</a></li>
</ul>
</div>
</div>
</nav>
这是给我一个问题的一句话:
<li><a href="my-account.php"><span class="glyphicon glyphicon-user"></span><?php echo $user->getName(); ?></a></li>
php没有显示到屏幕上,浏览器控制台显示代码已被注释。
欢迎任何帮助。提前谢谢!
答案 0 :(得分:0)
首先从.txt
文件中获取内容,然后执行以下操作:
$name = $user->getName();
$text = file_get_contents("Template/superNav.txt");
$text = str_replace('USERNAME', $name, $message);
$text$message = str_replace('logo_url', $base_url, $message);
并在你的.txt
文件中用一些常量替换php值。
喜欢这个
<li><a href="my-account.php"><span class="glyphicon glyphicon-user"></span>USERNAME</a></li>
所以在这里你可以看到我们用动态值替换了USERNAME
的值。希望它有所帮助!!!
答案 1 :(得分:0)
file_get_contents
不会执行php。
相反,您可以使用输出缓冲和include
。
您还需要确保$user
在getBody
方法的范围内,因为include
从调用块中获取其范围。
在这个例子中,我使用了一个组合方法来说明:
private function getBody()
{
//create local user variable somehow
$user = $this->getUser();
//start buffer
ob_start();
if ($this->specialUser) {
include "Template/superNav.txt";
} else {
include "Template/userNav.txt";
}
//return contents of buffer as string
return ob_get_clean();
}