Có, có. Đừng biến nó thành người trợ giúp!
Người trợ giúp chỉ được thiết kế cho cấp chế độ xem. Nếu bạn cần nó trong một bộ điều khiển, thiết kế của bạn là sai.
Vì vậy, hãy biến nó thành lớp lib ... và sử dụng nó trong bộ điều khiển theo cách này. và sử dụng cùng một lib trong trình trợ giúp của bạn hoặc tạo trình trợ giúp trình bao bọc (tương tự như TextHelper cho String, NumberHelper cho CakeNumber, TimeHelper cho CakeTime v.v.) để dễ dàng truy cập các phương thức trong phạm vi xem của bạn.
Đối với các giải pháp phức tạp hơn hãy nhìn vào Sessions:
CakeSession is the lib class.
SessionComponent wraps it for the controller layer
SessionHelper wraps it for the view layer
Đối với một Lib "DateLib" (bạn có thể đặt tên cho nó bất cứ điều gì bạn thích miễn là tên lớp là duy nhất trong suốt ứng dụng và core): Hoặc đặt nó vào/Lib/hoặc/Lib/PackageName trong khi PackageName có thể được định nghĩa bởi bạn (ví dụ "Tiện ích"). Nó là tốt hơn để nhóm bởi PackageName thay vì đặt nó trong Lib trực tiếp.
/Lib/Utility/DateLib.php
Và trong mã của bạn:
App::uses('DateLib', 'Utility');
$date = DateLib::format(); // for static methods
$DateLib = new DateLib();
$date = $DateLib->format(); // creating an extra object here
nếu bạn có thể làm việc với các phương pháp tĩnh bạn nên. đây cũng là cách làm bánh cho các lớp CakeTime, CakeNumber và String (xem mã để biết chi tiết).
bạn không chỉ định phiên bản CakePHP của mình! – mark
Nó là cakephp 2.2.3 – rrd