2016-04-30 25 views
1

私はちょうどその点に行きます。HTML/PHPテンプレートの読み込み機能

NVMではなく、HTMLで、その中のphpが、PHPのプリントとテンプレートをロードしようとすると...

多くのコードに複数のテキストを追加する必要があります。

Init.php

class Init { 

    public static $ROOT = ''; 
    public static $TEMPLATE = ''; 
    public static $SERVICE = ''; 

    public static function start() { 

     // Init Paths 
     Init::$ROOT  = str_replace("\\", "/", __DIR__); 
     Init::$TEMPLATE = Init::$ROOT . "/Template/"; 
     Init::$SERVICE = Init::$ROOT . "/Service/"; 

     // Init Template.php class 
     require_once(Init::$SERVICE . "Template.php"); 

     // Load template Top.php 
     $top = new Template(Init::$TEMPLATE . "Layout/Top.php"); 
     echo $top->load(); // Show Top.php 
    } 
} 

Top.php

<!DOCTYPE html> 
<html> 
    <? 
     // Load template Head.php 
     $head = new Template(Init::$TEMPLATE . "Layout/Head.php"); 
     $head->set("TITLE", "Dashboard"); //Set [@TITLE] to Dashboard 
     $head->load(); // Show Head.php 
    ?> 
</html> 

Head.php

<head> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <title>[@TITLE] | cwEye</title> <!-- [@TITLE] will be Dashboard--> 

    <? 
     echo "Hello"; // ERROR -> This will print <? echo"Hello"; ?> in my page 
    ?> 
</head> 

Template.php

<? 
class Template { 

    protected $file; 
    protected $values = array(); 

    private static $templateFile = null; 

    public function __construct($file) { 
     $this->file = $file; 
    } 

    public function set($key, $value) { 
     $this->values[$key] = $value; 
    } 

    // This code works but it will not load php inside 
    public function load() { 
     if (!file_exists($this->file)) return "Error loading template file ($this->file)."; 

      ob_start(); 
     include_once($this->file); 
     $data = ob_get_clean(); 

     foreach ($this->values as $key => $value) { 
      echo str_replace("[@$key]", $value, $data); 
     } 
     if(count($this->values) == 0) echo $data; 
    } 
} 
?> 

Iveはそれを作るための機能を持っていましたが、動作しません... それはちょうどhtmlでPHPを印刷します。

は、 <?または <?=のような短いタグを使用する代わりに <?phpを使用しないでください

ob_start(); 
include_once(FILE); 
$data = ob_get_clean(); 
+0

*何* PHPのプリントに を変更しますか?ここには4つのファイルが含まれています。もっと具体的にしてください。 – Marcus

+0

私はInit.phpと<?エコー "こんにちは"; ?> print in html – 8803286

+0

[PHPコードが実行されていない、コードページが表示されている可能性があります](http://stackoverflow.com/questions/5121495/php-code-is-not-being-executed-instead -code-show-on-the-page) –

答えて

0

にしようとしました。あなたはおそらくshort_open_tagをphp.iniのfalseに設定しています。 PHP 7を使用している場合は、短いタグが完全に削除され、もう動作しなくなることを知っておく必要があります。

+0

私のコードを修正しました...あなたがそれを見たい場合は、Template.phpの読み込み機能を更新します – 8803286

0

head.phpに完全なタグを使用します。 *何* HTML内

<?php echo "hello"; ?>

関連する問題