2015-12-16 92 views
0

這是CakePHP的3.0定製邏輯

我要封裝一些非平凡的PHP邏輯針對一個控制器操作一個.ctp文件中被稱爲(重複使用)數次。我試圖找出最優雅的方式。

我有一些想法,其中沒有一個似乎很優雅:

  1. $這在CTP文件執行上下文類視圖。將View類的方法放在.ctp文件中作爲$ this-> function()調用。這似乎是錯誤的分工,尤其是因爲傭工似乎是爲此而設計的。此外,這些功能將暴露給所有ctp文件。

  2. 創建一個幫手。這似乎是最好的方法,但該幫助程序始終會加載並暴露給所有.ctp文件,這似乎違反了遏制,因爲邏輯僅與一個操作的視圖相關。在沒有更好的解決方案的情況下,這是我正在採用的路線。

  3. 爲此元素/模型創建視圖的子類,並將邏輯放在那裏,以按照(1)中的方式進行訪問。這看起來似乎是最優雅的解決方案,但是看起來子類化View用於替代媒體(例如PDF),並且我無法看到如何在製作給定控制器操作的視圖時指導Cake使用該類。

  4. 將函數內嵌在.ctp文件中。我甚至不確定這是否會正常工作,並且將函數放在.ctp文件中似乎很難看。

有什麼建議嗎?

回答

1

那麼,你沒有解釋你想用什麼樣的超級複雜邏輯,所以我會說3)。這是非常可能的,you can load helpers in a view files

$this->loadHelper('MyFancyLogic'); 

您還可以檢出view cells。但是,再次,你沒有解釋到底是什麼問題,你試圖解決它很難推薦任何具體的東西。所以我會說這是一個幫手或一個視圖單元格。