【问题标题】:Cakephp 2.1: Importing functionality from a non-Cakephp class into a new Cakephp controllerCakephp 2.1:将非 Cakephp 类的功能导入新的 Cakephp 控制器
【发布时间】:2012-06-06 01:53:27
【问题描述】:

我正在为我工​​作的实验室构建一个小型本地应用程序。长话短说,我编写了一个类(称为 MailParser),它可以登录到共享的 Gmail 帐户并检索/解析 e-始终以标准化格式到达的邮件。课堂效果很好。我希望它的界面内置在 Cake 中。我不知道如何将这两者适当地结合在一起,而且我非常有信心我正在做的事情,虽然可以发挥作用,但可以得到很大的改进。

这些电子邮件是来自我们大学托管的注册表的自动回复;他们会将已报名参加实验的学生告知研究人员。

Cake 站点基本上是一个 UI,允许实验室成员管理数据库。 MailParser 类需要数据库;它将从这些电子邮件中解析的信息与数据库中的信息进行比较,以随后更新各种 Google 日历(例如,一封电子邮件为“Participant_X 已注册 Experiment_Y”;数据库将知道“Experiment_Y”正在运行通过“Experimenter_Z”并将其发布到他们的日历中)。

Cake 应用程序小而简单; “实验”、“实验者”、“日历”。

我已经这样做了:

<?php 

App:users('AppController', 'Controller');
/**
 * Personas Controller
 *
 * @property Persona $Persona
 */
class MailparsersController extends AppController {
    function index($getMail=false) {
    //bunch o' code
    }

 //bunch o' functions
}
?>

文件名为MailparsersController.php。没有模型或视图,但我不希望有;最终,这个类将被一个小型 Python 应用程序调用,我想定期向mylabserver.com/Mailparsers 发出 http 请求(可以使用 javascript,只是不想让浏览器一直打开)。我的index() 函数在调用时会执行它应该执行的所有操作,但会返回错误页面。有没有办法让 Cakephp 控制器安静地工作而不返回视图?

基于蛋糕的用户界面让实验室成员可以“注册”他们的实验和相应的日历,从而实现部分工作流程的自动化;鉴于它的用途有限,我可以自己编写这个 php,但我是 Cakephp 的忠实粉丝,并且一直在寻找将它的用途扩展到我的目的的方法。

谁能建议一种适当的方式将我的 Mailparser 功能引入我的 Cake 应用程序?这会更适合作为插件(我以前从未做过)吗?在这里,我将非常感谢您的任何帮助。谢谢!

【问题讨论】:

  • 将其添加为供应商,您将能够像平常一样访问该课程?
  • 你可以设置$this-&gt;autoRender = false;如果你也不想布局,基本上没有输出,$this-&gt;layout = false也是。如果您不想查看,请在操作中。它也可能是一个带有 cron 的 shell 任务。
  • Tigrang:谢谢,这解决了我实际发布的难题。 Jleagle:这也可以,谢谢。

标签: cakephp cakephp-2.1


【解决方案1】:

由于您使用的是 cake 2.x,我将建议您这样做:

  1. 将您的课程存储在Lib folder
  2. 创建一个新的component,例如MailparserComponent,您可以在其中加载您的类,如下所示:App::uses('Mailparser', 'Lib');
  3. 使用您的组件方法创建一个干净的“蛋糕式”API,并让您的类对应用程序的其余部分隐藏。

或者,您可以将类更改为组件。无论哪种方式,您都可以在应用程序的任何控制器中使用您的类,而不会出现任何问题。

此外,如果您真的打算将来在其他应用程序中使用此代码,那么插件就是您的最佳选择。

【讨论】:

  • 这个解决方案最好地解决了我对我的方法是否正确的担忧;总体而言,此解决方案似乎是最佳实践实施。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-08
  • 2012-04-21
  • 1970-01-01
  • 2012-05-21
相关资源
最近更新 更多