gpt4 book ai didi

cakephp - 在 Controller 中使用 cakephp 助手

转载 作者:行者123 更新时间:2023-12-04 11:10:06 26 4
gpt4 key购买 nike

我有一个助手可以将不同的字符串更改为日期。
通过这个+5变成2012-11-17(从今天起5天),5变成2012-11-05(今年,这个月,给定的日子)。

我想在我的 Controller 中使用同样的东西。

App::uses('EasyDateHelper', 'View/Helper');
App::uses('View', 'View');
$this->View = new View($this->Controller);
$easyDate = new EasyDateHelper($this->View);

这段代码运行良好,但我想知道是否有更好/更简单的方法。

最佳答案

是的,有。
不要让它成为 helper !

助手是专为 View 级别设计的。
如果您在 Controller 中需要它,那么您的设计是错误的。

所以让它成为一个 lib 类等,并以这种方式在你的 Controller 中使用它。
并在您的助手中使用相同的库或创建一个包装助手(类似于 String 的 TextHelper、CakeNumber 的 NumberHelper、CakeTime 的 TimeHelper 等)来轻松访问您的 View 范围中的方法。

对于更复杂的解决方案,请查看 session :

CakeSession is the lib class.
SessionComponent wraps it for the controller layer
SessionHelper wraps it for the view layer

对于 Lib“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

如果您可以使用静态方法,则应该这样做。这也是 cake 对 CakeTime、CakeNumber 和 String 类的处理方式(详见代码)。

关于cakephp - 在 Controller 中使用 cakephp 助手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13346756/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com