2011-06-22 10 views
1

私はすべてのコントローラ/モデルからアクセスできる可能性があるはずのApp-wideメディアアップロードを作成しようとしています。
は私がすべてアップロードされたファイルの記録を保持するテーブルmedia上の考え、私のスキーマは次のようになります。CakePHP:アプリ全体のメディアアップロードのベストプラクティス

id 
controller  //to keep the reference from which controller the file was uploaded 
foreign_key  //since files should be uploaded to specific records, I need this id 
filename 
extension 
fullname 
size 
created 
modified 

私はこれをやってで最善のアプローチがどうなるかわかりません。私はコンポーネント、プラグイン、および動作を考えましたが、まだ分かりません。

My Appには、さまざまなレコードのさまざまなコントローラがあります。
たとえば、プロジェクトを管理するため、プロジェクト編集マスク内の特定のプロジェクトにPDFを添付できるようになりました。
これは他のコントローラが必要とする機能なので、アプリケーション全体に書きたいと思っています。

私は、マスク内からアップロード機能を呼び出すためにヘルパーが必要であると確信しています。
次のようなものがあります:echo $this->Media->uploadMask();これは、コントローラとIDの準備が整ったアップロードマスクを提供しています。私は現時点で編集中です。

しかし、どのルートをアップロードする必要があるのか​​わかりません。 /media/uploadのようなものは非常に良いでしょうが、これがMVCに正しく収まるかどうかはわかりません。
特定のコントローラから呼び出すほうがよいでしょうか?または、AJAXアップロードだけが普通のコントローラー/モデルと同じように優れていますか?

+0

以下のメディアプラグインは、id、model、foreign_key、dirname、basename、checksum、group、alternative、created、modifiedというスキーマを持つ単一の 'attachments'テーブルを使って正確にこれを行います。 – deizel

答えて

4

説明しているものはBehaviourです。これは基本的にどのモデルにも適用できるメソッドのオブジェクトです。コントローラの場合は、Componentsもあります。

CakePHPのアップロード動作は、基本的な画像操作に適したMeio Uploadと、より高度で最近更新されたCakePHP Media Pluginの2種類があります。

+0

Media Pluginへのリンクありがとうございました。私が探していたものとまったく同じですが(残念ながら見つけることができませんでした)) – Tim

関連する問題