0

私は自分が働いているラボ用の小さなローカル アプリを構築しています。簡単に言えば、共有 Gmail アカウントにログインして、常に電子メールを取得/解析できるクラス (MailParser と呼びます) を作成しました。標準化された形式で到着します。クラスはうまく機能します。そのためのインターフェースをCakeに組み込みたいです。この 2 つを適切に組み合わせる方法はわかりませんが、私が行っていることは、機能的ではありますが、大幅に改善される可能性があると確信しています。

電子メールは、大学がホストするレジストリからの自動応答です。彼らは、実験に参加するためにサインアップした学生を研究者に知らせます。

Cake サイトは、基本的にラボのメンバーがデータベースを管理できる UI になります。MailParser クラスにはデータベースが必要です。それらの電子メールから解析された情報をデータベース内の情報と比較して、その後さまざまな Google カレンダーを更新します (電子メールに「参加者 X が実験 Y にサインアップしました」と書かれているとします。データベースは「実験 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. モデルやビューはありませんが、存在したくありません。最終的に、このクラスは定期的に http リクエストを送信したい小さな Python アプリから呼び出されmylabserver.com/Mailparsersます (JavaScript を使用できますが、常にブラウザーを開いたままにしたくないだけです)。私のindex()関数は、呼び出されると、必要なすべてのことを行いますが、エラー ページを返します。ビューをまったく返さずに Cakephp コントローラに静かに仕事をさせる方法はありますか?

Cake ベースの UI により、ラボのメンバーは実験と対応するカレンダーを「登録」できるため、ワークフローの一部が自動化されます。用途が限られているため、この php を自分で作成することもできますが、私は Cakephp の大ファンであり、その有用性を自分の目的に合わせて拡張する方法を常に探しています。

Mailparser 機能を Cake アプリに組み込む適切な方法を誰か提案できますか? これはプラグインとしてより適切でしょうか (これまで行ったことはありません)。ここで何か助けていただければ幸いです。ありがとう!

4

1 に答える 1

1

Cake 2.x を使用しているため、次のことをお勧めします。

  1. クラスをLib フォルダーに保存します。
  2. 次のようなものでクラスをロードできる新しいコンポーネント、たとえば MailparserComponent を作成します。App::uses('Mailparser', 'Lib');
  3. コンポーネント メソッドを使用してクリーンな「簡単な」API を作成し、クラスをアプリの残りの部分から隠しておきます。

または、クラスをコンポーネントに変更できます。どちらの方法でも、アプリ内の任意のコントローラーでクラスを問題なく使用できます。

さらに、将来このコードを他のアプリで使用することを本当に計画している場合は、プラグインが最適です。

于 2012-06-01T08:24:02.557 に答える