所以,我試圖建立一個基於我自己的類似MVC的PHP模型的網站。MVC模型中的外部CSS和JS文件
讓我們說,每一個視圖由至少2份:
讓那些是「的template.php」和「mypage.php」(第二部分取決於具體的頁上,所述第一部分是常見的) 。
的template.php具有下面的代碼(以簡化版本):
<html>
<title>Sometitle</title>
<link rel='stylesheet' href='/css/gen.css' type='text/css' />
<script type='text/javascript' src='/js/gen.js'></script>
<?php echo $other_external_files; ?>
</head>
<body>
<div class="some_header_and other stuff">...</div>
<div class="workfield">
<?php include_once mypage.php; ?>
</div>
</body>
</html>
那mypage.php'(以及一些其他頁面)具有某些特定的CSS和.js問題應該包含的文件。
問題是:哪些是包含這些文件(如何和在哪裏)的最佳選擇?
這裏是我的想法:
我可以在模型中定義或控制變量
$other_external_files
,但真的不希望這樣做,因爲.css文件通常是視圖的一部分我可以在'mypage.php'中對它進行硬編碼,只要它不需要保留在<head>
。我知道.css和.js文件可以動態地包含在JavaScript中,但是如果沒有強大的需求,我想避免使用這種解決方案。
我可以在相應的模型中定義所有這些變量。這裏的問題是,從一開始我一直試圖根據內容構建我的模型(因此,我有通用模型(文件和類),如'用戶','Shop_items'等,不一定對應每個視圖文件(這意味着我基本上沒有任何mypage_model.php,只是'items_model','users_model'等)。在模型中定義頁面的標題將迫使我添加大量的模型文件。
我可能自動定義的核心觀點類變量
$other_external_files
,就像這樣:
-
function __construct($action){
$this->action = $action.'.php';
$this->css_file = 'css/'.$action.'.css';
}
function generate($view_lvl, $data = null){
$other_external_files = $this->css_file;
require_once $action;
}
但是,這種方法似乎是有限的,因爲可能會出現這種情況,當我想要包含名稱完全不同的多個文件時。
我個人的選擇,現在是第三,因爲它不僅允許添加CSS和JS,也容易定義文檔和其他可能的變量冠軍......但我相乘文件之前,我如果它真的是正確的方式,那麼你喜歡諮詢有經驗的程序員。
非常感謝,很抱歉有很長的問題。很感謝任何形式的幫助!
我會存儲文件以包含在每頁基於數據庫,幷包括他們取決於你在哪個頁面上。即讓CSS包含js包括等...並循環遍歷需要包含的文件,併爲每個頁面執行此操作。這樣每個頁面可以在每頁基礎上具有不同的/多個js或css。 – Bryan
所以,你建議在db **中存儲類似** pairs_page_id => corresponding_external_files的東西?那麼,要走的路..但是,如果我有內聯的CSS/JS,那麼我可以簡單地寫在view.html文件中...在你的情況下,我開始依靠DB來完成這樣一個基本的任務。 –
噢,每次我必須啓動一個新的.css文件時,我應該將它添加到數據庫中,並使用相應的路徑和ID?似乎有點煩人。或者這是一種常見的做法?你的方法也意味着**我將不得不連接到數據庫並且甚至在完全靜態的html頁面上進行查詢**,比如帶有外部.css的錯誤頁面? –