2014-02-16 86 views
5

我正在處理我的第一個php網站,我遇到了一個我看不出來的問題。我試圖讓一個包含我的結構的php頁面,以及其他一些注入其html內容的php頁面,同時保留url更改,以便我仍然可以直接鏈接頁面。加載php文件到佈局模板?

到目前爲止,這是我在做什麼,但它似乎沒有有效的:

的index.php

<html xmlns="http://www.w3.org/1999/xhtml"> 
    <?php include("head.php"); ?> 

    <body> 
     <div class="container"> 
      <!-- Navigation header --> 
      <?php include("navigation.php"); ?> 

      <!-- Main container --> 
      <div id="MainContainer"> 
       <?php include("home.php"); ?> 
      </div> 

      <!-- Footer --> 
      <?php include("footer.php"); ?> 
     </div> 
    </body> 
</html> 

about.php

<html xmlns="http://www.w3.org/1999/xhtml"> 
    <?php include("head.php"); ?> 

    <body> 
     <div class="container"> 
      <!-- Navigation header --> 
      <?php include("navigation.php"); ?> 

      <!-- Main container --> 
      <div id="MainContainer"> 
       About me! 
      </div> 

      <!-- Footer --> 
      <?php include("footer.php"); ?> 
     </div> 
    </body> 
</html> 

這感覺完全錯誤,如果我想改變我的容器類,或改變結構,我現在必須在兩個地方做而不是一個。

在ASP.net MVC中,我將有一個Layout_Head.cshtml文件,它將包含我的HTML結構,並且在裏面我可以渲染來自不同頁面的視圖,url更改,但佈局總是先渲染,然後控制器/注意所需視圖的html注入。

我該如何在PHP中進行復制?

+0

爲什麼不把'body'和'#container'標籤放在'head.php'文件中?您無法將ASP.net MVC與PHP進行比較。 PHP是一種語言,ASP.NET MVC是一個框架。如果你想要MVC,可以使用像Codeigniter這樣的框架。 –

+0

我明白這是不一樣的,我只是試圖解釋我通常如何做:)爲了將body和#container放在head.php中,當我加載about.php時,我如何告訴它加載#container中的數據? – LanFeusT

+0

你不要告訴它加載任何東西; PHP包括簡單的回顯數據,就好像你已經把代碼放在那裏一樣。所以你的頭文件包含起始HTML和任何其他包裝,並且頁腳文件包含結尾體/ html標籤。 –

回答

4

通常情況下人們使用PHP包括模板更是這樣的:

的header.php

<html> 
    <head> 
    <title></title> 
    </head> 
    <body> 
    <div class="container"> 

footer.php

</div> <!-- .container --> 
    </body> 
</html> 

about.php

<?php include('header.php'); ?> 
    ... content goes here ... 
<?php include('footer.php'); ?> 

這樣您就不需要在每個製作的模板上不斷重複開始/結束標記。

+0

噢,我看到了...我試圖只有一個包含開始和結束標記(頁眉和頁腳合併成一個)的文件,然後將數據注入......現在更有意義!謝謝! – LanFeusT

+0

@LanFeusT是的佈局更合理,但PHP包括只是不支持這種行爲。當我開始在Rails中使用佈局時,我發現它比PHP包含的功能強大得多。許多PHP框架(例如Wordpress)仍然使用包括而不是佈局。 –

+0

我明白了,謝謝!這對我來說現在工作得很好! – LanFeusT