【问题标题】:CakePHP custom function (but not global)CakePHP 自定义函数(但不是全局的)
【发布时间】:2012-06-20 01:03:56
【问题描述】:

我有一个处理翻译的模块。

它不绑定任何数据库,文件纯粹是这样的:

$arr["key1"]="text";
...

我需要进行 Ajax 调用才能编辑该文件。每次访问页面时都会导入该文件,以提供我需要的任何文本内容(它可能不是世界上最好的东西,但它可以完成工作,而且它应该非常快,因为没有“XML解析”之类的东西,它只是存储在标准的 .php 文件中)。

为了处理这些将具有添加/编辑操作等操作的 ajax 调用,我制作了一个无模型的 TranslationController:

class TranslationsController extends AppController {
    public $uses = array(); // Model-less
    public $components = array('RequestHandler');
    public $helpers = array('Session');
    protected $translationFilePath;

    public function setItem() {
    }

    public function backupFile() {
    }
}

我的问题很简单:我应该将用于打开/写入/查找文件的自定义函数放在哪里?

例如,我有一个函数可以从正在读取的行中提取一个键。

我看过一些帖子,建议我们将数据放在模型中,但在我的情况下,我没有模型,而且这些函数没有链接到数据。所以它不应该在模型中,对吧? 我不希望它是全球性的。

感谢您的帮助。

【问题讨论】:

标签: cakephp controller


【解决方案1】:

你为什么不使用 CakePHP 自带的内置翻译工具,它基于或多或少标准的 gettext 工具?

您所做的只是重新发明轮子,并且可能会提出一个未经测试的自定义翻译实现,显然缺少 CakePHP 已经为您提供的功能。比如你如何处理复数?

CakePHP 为您提供 __()、__d()、__n()、__dn() 进行翻译,翻译文件作为纯文本文件存储在 APP/Locale/ 中,并使用 poedit 进行编辑。

http://www.gnu.org/software/gettext/http://book.cakephp.org/2.0/en/core-libraries/internationalization-and-localization.html

【讨论】:

  • 这有两个主要原因: 1. 我的系统必须能够“实时”自动编辑翻译文件(可以包含 HTML),每个更改都通过 ajax 调用发送到数据库。 2. 它是直接在 PHP 文件中生成的,因此它的读取速度应该比任何其他解析的东西都要快。我可能错了,但对于这两种情况,我认为 CakePHP 做不到。
【解决方案2】:

听起来像是自定义数据源的用例:http://book.cakephp.org/2.0/en/models/datasources.html

就我个人而言,我只会在您的应用程序的app/Lib 文件夹中创建一个普通的 PHP 类。

【讨论】:

  • 好的,谢谢!它有效,我使用了一个自定义库,我使用 App::import('Lib', 'TranslationsLibrary');
猜你喜欢
  • 1970-01-01
  • 2015-05-12
  • 1970-01-01
  • 1970-01-01
  • 2022-11-22
  • 2023-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多