1

我目前FieldFormatterHelper创建了一个 Helper ( ),以帮助在各种视图中对某些类型的数据(日期、布尔值、枚举类型等)进行一致的格式设置。

特别是,我使用整数在 MySQL 中存储某些枚举类型,然后在我的视图中显示相应的字符串值。我现在遇到的问题是,虽然这个帮助程序适用于我的视图,例如管理用户从站点后端访问的“视图”和“索引”视图,但我afterSave()在几个模型中也有方法可以创建 JSON 输出前端的小胡子渲染。

我或多或少地了解 MVC 的核心思想和基本论点,例如,不要尝试从模型中访问 View Helper,但我需要对 Helper 提供的功能进行某种通用访问。当然,我可以在我的前端 JavaScript 和其他我可能需要它的地方定义我的枚举类型映射,但这违反了 DRY 原则,最终维护起来会很痛苦。

所以,问题是:如果不适合从我的模型中访问/加载我的助手,我应该在哪里以及如何封装这个功能,以便我的模型和各种视图都可以使用它?

理想情况下,我将能够继续使用我现有的FieldFormatterHelper--perhaps modifying 作为这个新容器的包装器。

任何关于 CakePHP 和 MVC 方式的一般指导将不胜感激。谢谢。

4

2 回答 2

2

您可以将其实现为类上的静态方法并在任何地方使用它

 class Utils {
     static public function formatField($args) {
          // your implementation
     } 
 }

然后让你的助手推迟使用静态方法调用

 Utils::formatField($args);
于 2013-07-03T20:55:01.053 回答
0

您可以创建一个静态函数并将其放在 app\view\helper\AppHelper.php 中。然后当你想调用它时,你放

App::uses('AppHelper','View/Helper');

在文件的顶部并像这样调用它:

AppHelper::staticFunction()

于 2014-06-26T10:21:02.087 回答