1

私のプロジェクトでは、モノリシック スタイルの添付ファイル テーブルを使用して Cakephp メディア プラグインを使用しています。つまり、すべての添付ファイルは、ファイルの詳細と共に保存されたforeign_key、model、group などを含む 1 つのテーブルに格納されます。したがって、私のモデルは次のようになります。

class ProjectProfile extends AppModel {

var $name = 'ProjectProfile';
var $useDbConfig = 'default';
var $useTable = 'project_profiles';
var $actsAs = array('Media.Transfer', 'Media.Generator');

public $belongsTo = array(
    'Project' => array(
        'className' => 'Project',
        'foreignKey' => 'pjID'
    )
);

var $hasMany = array(
      'Photo' => array(
          'className' => 'Media.Attachment',
          'order' => 'Photo.basename, Photo.id',
          'foreignKey' => 'foreign_key',
          'conditions' => array('Photo.model' => 'ProjectProfile', 'Photo.group' => 'Photo'),
          'dependent' => true)
  );

次に、レコードを保存するときにコントローラーの saveAll を実行すると、添付ファイルが保存されます。

これはすべて正常に動作しますが、一度に複数のファイルをアップロードできるようにしたいのですが、プラグインは次の形式でこれをサポートします。

echo $this->Form->hidden('Photo.0.model', array('value' => 'Photo'));
echo $this->Form->input('Photo.0.file', array('type' => 'file');
echo $this->Form->hidden('Photo.1.model', array('value' => 'Photo'));
echo $this->Form->input('Photo.1.file', array('type' => 'file');
echo $this->Form->hidden('Photo.2.model', array('value' => 'Photo'));
echo $this->Form->input('Photo.2.file', array('type' => 'file');

しかし、個々のファイルごとに [参照] をクリックしなければならないのは少し面倒だという点には同意していただけると思います。複数のファイルのアップロードを許可する最も単純な方法は、HTML5 の複数ファイル セクション オプションを使用することでした - http://bakery.cakephp.org/articles/veganista/2012/01/31/html_5_multiple_file_upload_with_cake :

echo $this->Form->input('files.', array('type' => 'file', 'multiple'));

これにより、ファイル ブラウザでシフト クリックして複数のファイルを選択し、ファイルを配列に入れて保存することができます... ただし、このフィールド形式はメディア プラグインによって処理されません。また、私が見る限り、保存時にモデル、グループなどのフィールドを追加する方法はありません。

では、モノリシック モデルを使用してメディア プラグインで複数ファイルのアップロードを処理する方法を知っている人はいますか? 私はすべての提案を受け入れます。

前もって感謝します。

4

1 に答える 1

0

この CakePHP 2.x プラグイン - AjaxMultiUpload - は役に立ちますか? それはまさにあなたが必要としているものだと思います。

于 2012-06-26T21:07:01.797 に答える