2017-02-25 116 views
1

我是PHP的新手。我寫了一些JS來爲我的項目製作AJAX請求,並且它運行良好,但我不知道如何將其轉換爲PHP。是否可以創建沒有任何文件的子頁面?

我準備的佈局類似如下:

  • mainLayout.php,
  • userLayout.php,
  • offerLayout.php,

在這些文件中有一些PHP和構建HTML頁面的MySQL部分。
在阿賈克斯很容易很多用戶只使用一個頁面,並用數據替換一些div之間進行導航......

但一個巨大的負的是,你不能有一個地址引用用戶配置文件或者要約(如mywebsite.com/user1)。

現在,當我使用PHP我想實現相同的佈局效果。
如何避免(甚至是動態的,當然它似乎是浪費內存IMO)創造了數千頁像user1.phpuser2.phpoffer1.php

我不知道是怎麼實現的效果在像example.com/user277373.php這樣的網站上,而不創建數千個文件,但只有一個模板。

+0

我在段落中分割了你的問題。更易於閱讀。 ;) –

回答

0

兩個解決方案,我看到的是要麼你用GET來分析你的數據:

http://example.com/?data=1736861

,比訪問它在$ _ GET變量:

$id = $_GET["data"]; 

($ id將是1736861 )

或者您使用的航班php擴展,這將看起來像這樣:

Flight::route('/id/@id', function($id){ 
    echo "ID: $id"; 
}); 

並且URL看起來像http://example.com/id/1736861。您也可以在飛行模塊中使用多個變量。

我希望這有助於塞巴斯蒂安

0

您是否熟悉任何MVC框架?如果不是,我會強烈建議習慣於MVC設計範例。 MVC =模型視圖控制器。從Wikipedia, a short excerpt

  • 模型存儲被根據來自控制器的命令檢索並在視圖中顯示的數據。
  • 視圖根據模型中的更改爲用戶生成新的輸出。
  • 控制器可以向模型發送命令以更新模型的狀態(例如,編輯文檔)。它也可以將命令發送到其關聯視圖以更改視圖對模型的顯示(例如,滾動查看文檔的 )。

很多框架的關鍵部件(在幾乎任何語言),兩個是路由和模板。在使用路由系統時,您可以爲每個加載的匹配特定路由的頁面指定一個模板。例如,site.com/people/:id其中':id'可以是URL中的任何值,並且可以配置爲使用「person.html」作爲HTML輸出。請注意,「person.html」接收將動態填充內容的變量/數據,例如<h2>Hello, {{name}}</h2>

所以,澄清,site.com/people/252site.com/people/12site.com/people/5site.com/people/john將所有符合site.com/people/:id路由路徑,其中:id是動態的,您的系統將使用一個模板(其中指定),以顯示所有數據。不要忘了,當路徑路徑被滿足時,這只是步驟1.您可能需要採取:id運行某些數據庫查詢並將該數據傳遞到模板中。

一個名爲Slim的流行微型PHP框架可能是一個很好的起點。下面是它的處理途徑和模板的方式文檔: https://www.slimframework.com/docs/objects/router.html https://www.slimframework.com/docs/features/templates.html

修身通常與嫩枝,一個超級流行的PHP模板引擎使用。下面是其網站/文檔:http://twig.sensiolabs.org/

如果這還不夠,斯利姆擁有超級方便的第一個應用程序的演練,會告訴你的路線,數據庫連接,模板:https://www.slimframework.com/docs/tutorial/first-app.html

希望此信息可以幫助您你的旅程 - 祝你好運!

+0

太棒了!謝謝你的答案。我真的很感激,並會檢查所有這些,看起來很棒。但我的問題也是關於重定向到另一個頁面。我不知道是否有可能在純粹的PHP。我可以在C#中用http listener實現它,我想我可以用nginx編輯配置文件或其他任何東西,但我找不到任何有關它的信息。例如,當有人輸入任何錯誤,並且服務器沒有找到正確的uri時,它會給你404錯誤和ofc它可以返回類似echo'Typed'的東西。$ uri.'doesn't exist'。這怎麼可能? – Michalaq

+0

這正是我想要達到的效果:) – Michalaq

+0

你的第一個例子是site.com/people/:id是我想要的,但是我想我的服務器上會放置文件夾'people'。動態創建並基於示例,但仍會創建並佔用空間。我錯了嗎?我想避免創建任何文件,並且如果uri受到真實用戶配置文件的影響,而不是404顯示模板。 – Michalaq

相關問題