Ja, gibt es. Machen Sie es nicht zu einem Helfer!
Helfer sind nur für die Ansichtsebene vorgesehen. Wenn Sie es in einem Controller benötigen, ist Ihr Design falsch.
Also machen Sie es zu einer Lib-Klasse usw. und verwenden Sie es in Ihren Controllern auf diese Weise. und verwenden Sie entweder die gleiche Lib in Ihren Helfern oder einen Wrapper-Helfer (ähnlich wie TextHelper für String, NumberHelper für CakeNumber, TimeHelper für CakeTime usw.), um einfach auf die Methoden in Ihrem Ansichtsbereich zuzugreifen.
Für komplexere Lösungen zu sehen, Sessions:
CakeSession is the lib class.
SessionComponent wraps it for the controller layer
SessionHelper wraps it for the view layer
Für eine Lib „DateLib“ (Sie nennen es können, was Sie wollen, solange der Klassenname im gesamten App und Kern einzigartig ist): Entweder in/Lib/oder/Lib/PackageName, während PackageName von Ihnen definiert werden kann (zB "Utility"). Es ist besser, nach PackageName zu gruppieren, anstatt es direkt in Lib zu platzieren.
/Lib/Utility/DateLib.php
Und in Ihrem Code:
App::uses('DateLib', 'Utility');
$date = DateLib::format(); // for static methods
$DateLib = new DateLib();
$date = $DateLib->format(); // creating an extra object here
, wenn Sie mit statischen Methoden arbeiten können, sollten Sie. Dies ist auch der Weg, den es für die Klassen CakeTime, CakeNumber und String macht (siehe Code für Details).
Sie haben Ihre CakePHP-Version nicht angegeben! – mark
Es ist cakephp 2.2.3 – rrd