是的,有。 不要讓它成爲幫手!
助手只能用於視圖級別的設計。 如果你在控制器中需要它,你的設計是錯誤的。
因此,使它成爲一個lib類等,並以這種方式在你的控制器中使用它。 並且在你的幫助器中使用相同的lib或者創建一個包裝輔助器(類似於TextHelper的String,NumberHelper的CakeNumber,TimeHelper的CakeTime等)來輕鬆訪問視圖範圍中的方法。
對於更復雜的解決方案,看看會議:
CakeSession is the lib class.
SessionComponent wraps it for the controller layer
SessionHelper wraps it for the view layer
對於庫「DateLib」(你可以命名爲任何你喜歡,只要類名在整個應用程序,核心是唯一的): 可以將它放在/ Lib /或/ Lib/PackageName中,而PackageName可以由您定義(例如「Utility」)。最好用PackageName進行分組,而不是直接放在Lib中。
/Lib/Utility/DateLib.php
並在代碼:
App::uses('DateLib', 'Utility');
$date = DateLib::format(); // for static methods
$DateLib = new DateLib();
$date = $DateLib->format(); // creating an extra object here
如果你能,你應該靜態方法工作。這也是蛋糕爲CakeTime,CakeNumber和String類所做的方式(請參閱代碼以獲取詳細信息)。
你沒有指定你的cakephp版本! – mark
這是cakephp 2.2.3 – rrd