我想從控制器中設置佈局的$ scripts_for_layout。 這是可能的,如果是的話,怎麼樣?
回答
簡答:也許你做錯了。
長答案:腳本不應該依賴於控制器。這在理論上是錯誤的,蛋糕不喜歡不遵守mvc模式的人。
解決方法(因爲有時你只需要):您可以在beforeRender一個變種:
function beforeRender() {
parent::beforeRender();
$this->set('scripts', array('script1', 'script2' ...));
}
而且在佈局確認爲$腳本和添加。
現在你說了,我明白我做錯了。 我不想在每個視圖中使用腳本,我認爲使用控制器文件會更加明智。所以我只有一個文件可以編輯。 – kaklon 2010-02-26 09:30:10
也許你可以使用不同的佈局,如果它對你更好。在這些年裏,我發現我嘗試做這個蛋糕的每一件事都不會讓我錯,或者不符合MVC標準。 蛋糕是美好的也因爲迫使你寫好,清潔和結構化的代碼。 – 2010-02-26 11:22:43
在Cake 1.2中,當你做$this->set('script_for_layout', 'script here...)
時,它會將這個變量轉換爲$ scriptForLayout,所以它不起作用。
Cake 1.3修復了這個問題,但我沒有試過看它是否有效,但是你違反了MVC,因爲腳本是爲了View而不是在Controller級設置的。對於動態腳本,您可以像上一張海報所建議的那樣爲您的視圖分配變量。
我知道這是一個老問題,但今天我有同樣的問題。解決方案似乎比這裏提到的答案更容易。來自CakePHP 1.2的食譜:
內聯:塊應該內聯打印還是寫入緩存以備後續輸出(即$ scripts_for_layout)。
所以,在你看來,你只需要包含腳本設置在線爲假,像這樣:
$javascript->link('script1', false)
您可以爲CSS做同樣的:
$html->css('stylesheet1', null, array(), false)
關注:我只在CakePHP 1.2上測試過。但根據1.3的食譜,這是一回事。
- 1. 我可以在magento中設置控制器操作的cronjob嗎?
- 2. 可以在控制器內使用$控制器嗎?
- 3. 我可以在另一個控制器內使用控制器嗎?
- 4. 我可以在控制器內知道當前的URL嗎?
- 5. Cakephp Auth可以在其他控制器中使用嗎?
- 6. 我可以重寫控制器ActionAttribute嗎?
- 7. 我可以在MVC3基礎控制器上爲ViewResults設置默認佈局嗎?
- 8. laravel - 我可以從控制器創建控制器嗎?
- 9. 設置控制器內容
- 10. CakePHP - 設置共享內核後訪問控制器操作
- 11. 我可以設置高於2GB的任務內存限制嗎
- 12. CakePHP MVC控制器可以返回圖像嗎?
- 13. 我可以配置控制器拒絕所有Post方法嗎?
- 14. 我可以設置memory_limit高於機器內存嗎?
- 15. Spring MVC控制器可以設置URL在瀏覽器中顯示嗎?
- 16. 我可以根據控制器ID在頁面中使用控制器嗎?
- 17. 我可以設置$嗎?在測試?
- 18. 我可以在BarButton上設置UITableViewCellAccessoryCheckmark嗎?
- 19. 我可以在用戶控件內強制編譯錯誤嗎?
- 20. 控制器/在CakePHP
- 21. 可以在控制器內部使用輔助方法嗎?
- 22. 你可以從CakePHP中的控制器beforeFilter()函數調用Html-> scriptBlock()嗎?
- 23. 我只設置在導航控制器
- 24. 將控制器放置在模型文件夾中可以嗎?
- 25. 我可以在phantomJS中設置html內容嗎?
- 26. 我可以在ViewFlipper內部設置contentView嗎?
- 27. 我可以在內核中設置Linux SIGUSR1嗎?
- 28. 我可以在斷點內設置一個Sass變量嗎?
- 29. 你可以設置容器控制器的滾動視圖插圖嗎?
- 30. Cakephp會話未在頁面控制器中設置
你爲什麼要這麼做?如果是每個動作都包含的腳本,我會將其放入佈局中。如果只是採取某些行動,我會把它放在視圖中。 – 2010-02-25 16:53:12
你說得對,我明白了(在下面的評論中更長的文章) – kaklon 2010-02-26 09:33:08