2012-12-29 31 views
9

目前,我有一個很大的CakePHP應用程序,它有一個佈局和許多視圖。在佈局中,我加載了大多數視圖所需的Javascript文件。在視圖本身中,我要麼加載其他Javascript文件(例如,加載僅在那裏需要的庫文件),要麼在腳本標記中添加一些僅與此視圖相關的Javascript代碼,例如,如果我需要點擊處理程序。在CakePHP Layout的「底部」加載Javascript文件

由於在加載頁面的HTML代碼塊中加載Javascript文件是一個已知的事實,因此我想在關閉正文標記之前將它們放在底部。但是,如果我這樣做,我的視圖中加載內容的Javascript因爲不知道我加載的Javascript文件而中斷。我明白加載視圖中的Javascript代碼在我的文件加載之前執行。但是我怎麼能阻止呢?

我目前使用的HTML助手的佈局(和其他地方)來加載我的JS文件是這樣的:

<?php echo $this->Html->script('//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'); ?> 

,而且我用JS助手到「輸出」 JS在年底與

<?php echo $this->Js->writeBuffer(); ?> 

的頁面是否有一種方法,我可以附加在我的意見JS代碼,這樣,當我把它writeBuffer執行?這可以幫助我嗎?

回答

12

這是我在我看來,這樣做:

echo $this->Html->script('filename', array('inline' => false)); 

而這正是我在佈局的底部做:

echo $this->fetch('script'); 
+0

我認爲這是一個很好的解決方案,如果我將所有內聯代碼放入JavaScript文件中的視圖中,我認爲它是有效的。謝謝你的建議! – akohout

17

從CakePHP 2.1版本,你可以使用腳本塊:

// in your view 
$this->Html->script('filename', array('block' => 'scriptBottom')); 

// in your layout 
echo $this->fetch('scriptBottom'); 

這種方法可以讓你保持echo $this->fetch('script')在佈局的<head>如果你需要頂部的任何腳本。

+0

感謝您的回答。事實上,我已經在網絡的某個地方找到了答案,並將它整合在一起,但在完成答案後肯定值得在此提及。 – akohout