1

CakePHPを使用してWebアプリケーションを開発しています。私のアプリケーションのフローは次のとおりです。

  • ファイルはフォームビューにアップロードされます。

  • コントローラがファイルを受信します。ファイルの種類に応じて、異なる種類の処理を行います。しかし、最終的に抽出されたパラメータは同じであり、データベースの同じテーブルに保存されます。ファイルの種類ごとに処理を行っていると、コントローラーが非常に長くなりました。私はここここで使用を奨励するいくつかの投稿を見ましcomponentたが、ケーキブックから、異なるコントローラー間でコードを共有したいときにコンポーネントを使用するように書かれています。これはユーティリティタイプのクラスだと思います。

私の質問はcontroller、コントローラーで特定の種類のファイルを受信したときにフローをリダイレクトできるように、コードを異なるファイル間で分割するにはどうすればよいですか?

4

1 に答える 1

1

アップロードの処理はデータ処理であり、これによってモデルに移行する必要があります。個人的には、これらすべてのコンポーネント ソリューションが実際に出回っているのが適切な場所だとは思いません。

アップロード処理をモデルに移動すると、単一のコントローラーを使用して、モデルメソッドですべてのチェックを実行し、関連するモデルを呼び出したり、最終的に必要な種類のファイルを処理するモデルのインスタンスを取得したりできますそのモデルによって処理されます。

お気軽に私のFileStorageプラグインをご覧ください。readme.md を読むと、適切なファイル処理についてさらにアイデアが得られるかもしれません。IMOファイルは、パスをUsers.avatarなどに保存するだけでレコードに直接添付することはできませんが、代わりにファイルをユーザーモデルに関連付ける必要があります: User hasOne Avatar. ファイルの処理とそれらの操作ははるかに簡単で、すべてのファイルを統一して処理できます。

于 2012-10-17T10:24:09.723 に答える