2017-03-01 12 views
0

私は私のClassPageを通して作成されたシンプルなテンプレートを持っています。クラスは呼び出され、テキストファイルからhtmlコードを読み込みます。ナビゲーション内でPHP変数をエコーし​​たいのですが、埋め込みPHPがブラウザのコンソールにコメントアウトされているだけです。 私はおそらく、読み込まれたファイルがサーバによって処理されていないと考えているので、PHPが処理されていないのはなぜですか?それとも本当にシンプルなものが欠けているのですか?後で組み込むためにPHPをテキストファイルに埋め込む方法は?

Heres the code: 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

、あなたは(含める() 'と[バッファ]'使用することができますhttp://php.net/manual/ref.outcontrol.php)。しかし、 '$ user'があなたのインクルードファイルに定義されていないので、まだ問題があります。 'file_get_contents()'でファイルを読み込むと、ファイルにプレースホルダを置き、 'str_replace(MY_PLACEHOLDER、$ user-> getName()、$ text)'を使う方が簡単かもしれません。 'getBody()'はどのように呼び出されますか? –

+0

挿入されたファイルの内容を変更しない場合は、 'include()'を使用してください。あなたのPHPコマンドは自動的に実行されます。バッファーは必要ありません。 – RST

答えて

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の値を置き換えます。だからここにあなたが私達は動的な値でUSERNAMEの値を置き換えている見ることができます。この

<li><a href="my-account.php"><span class="glyphicon glyphicon-user"></span>USERNAME</a></li> 

よう

。それが役に立てば幸い!!!

0

file_get_contentsあなたが発見したように、phpは実行されません。

代わりに出力バッファリングとincludeを使用できます。 getBodyメソッドの範囲内にある$userが、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(); 
} 
関連する問題