我正在使用PHP Fat Free,並試圖創建一個佈局/子佈局系統,它最終會在某種程度上模仿MVC。我有一個擁有佔位符的主佈局(實質上後端設置了不同的子佈局或部分文件路徑,然後視圖負責調用該文件名的渲染),這一切都很好。嵌入式Javascript與無脂佈局
我遇到的問題是當我需要在我的sublayout中的內聯JavaScript運行在主佈局的腳本後(例如,在jquery include行之後)在我以前使用的框架中,我能夠輸出緩衝ob_start和ob_get_clean來抓取在sublayout然後腳本傳遞到佈局以顯示腳本線以下,我希望這是有道理的,但如果沒有,這裏是當前的代碼,我在F3工作
路線:。
$f3->route('GET /test',
function($f3) {
// set the sublayout name
$f3->set('sublayout', 'testpage.php');
// render the whole shebang
echo View::instance()->render('testlayout.php');
}
);
佈局:
<!DOCTYPE html>
<html>
<head>
<title>Test Layout</title>
</head>
<body>
<h1>Test Layout</h1>
<?php echo View::instance()->render($sublayout) ?>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js" />
<!-- inline script should go here -->
</body>
</html>
的sublayout:
<h2>My Test Page</h2>
<div id='message'></div>
<script>
// This code needs to be placed AFTER the jquery include in the main layout
$(function(){
$('#message').html('This is my message');
});
</script>
我試圖延伸的視圖爲包括 「beginRegion」,並且基本上處理的ob_start和ob_get_clean部分,使得endRegion功能我的內聯腳本可以被選中,但是一旦我在子佈局中,我無法弄清楚如何將緩衝的代碼傳遞迴佈局,以便在jquery包含之後它可以被echo'd。
在你告訴我不應該使用內聯腳本之前,我知道這一點,而且我所做的大部分事情都在外部腳本文件中,我有一個包含的解決方案,但有時我需要內聯腳本,我卡住了。
有沒有辦法來處理我想要做的輸出緩衝,或者更好的是有沒有比輸出緩衝方法更好的解決這個問題的方法?
更新: 最佳做法通常決定了你應該包括在頁面底部的腳本的結束標記之前。如果我將腳本放在sublayout的上方,它會破壞我們的FE最佳實踐,並且在腳本下載時阻塞頁面的其餘部分。這就是爲什麼我想保持結構的方式,我已經注意到,而不是把jquery包含在子佈局之上。
感謝您的回覆。我應該澄清一下,並回答你的問題:「那麼爲什麼不把它寫成這樣?」最佳做法通常規定您應該在關閉正文標記之前的頁面底部包含腳本。如果我將腳本放在sublayout的上方,它會破壞我們的FE最佳實踐,並且在腳本下載時阻塞頁面的其餘部分。我會把它添加到原來的帖子來澄清這一點,thx爲部分的例子。我確信將來我會使用它。雖然,我不得不適應它,因爲我沒有使用F3模板 – tjans