我想使用cakephp媒体插件(David Persson的https://github.com/davidpersson/media)上传文件并将它们附加到多个模型。
附件属于模型A,模型B等。
模型A HasMany附件
模型B HasMany附件
为了使Media.Coupler工作,文档说“basename”和“dirname”字段需要添加到模型中。当我向posts表添加basename和dirname时,我可以让插件工作。
后期模型的设置是:
// Attachments
var $hasMany = array( 'Attachment' => array(
'className' => 'Media.Attachment',
'foreignKey' => 'foreign_key',
'conditions' => array('Attachment.model' => 'Post', 'Attachment.group' => 'post'),
'dependent' => true,
)
);
public $actsAs = array(
'Media.Transfer',
'Media.Generator',
'Media.Coupler',
);
我注意到在安装并启动插件后,数据库有一个名为attachments的新表,可以用于此但没有数据保存到它???
CREATE TABLE `attachments` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`model` varchar(255) NOT NULL,
`foreign_key` int(10) NOT NULL,
`dirname` varchar(255) DEFAULT NULL,
`basename` varchar(255) NOT NULL,
`checksum` varchar(255) NOT NULL,
`group` varchar(255) DEFAULT NULL,
`alternative` varchar(50) DEFAULT NULL,
`created` datetime DEFAULT NULL,
`modified` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM;
我不想在所有需要附件的模型中添加basename和dirname。
是否可以配置媒体插件以将上传保存到附件表并通过model + foreign_key链接它们?
有没有人成功使用媒体插件和这种设置?
答案 0 :(得分:0)
我和你的情况类似,差别不大:
·模型A HasOne 附件
·模型B HasOne 附件
·我正在尝试使用this tutorial之后的jquery Fileuploader插件
嗯,我认为你的问题的答案是肯定的,在用这个插件搞砸了之后......你可以避免在你的A或B模型中添加basename和dirname,只是不要使用耦合器。我认为这是它唯一的功能,虽然我不确定......它只给了我一些我确定的问题。
我所做的是在创建帖子时手动将模型和foreign_key字段添加到附件模型。
如果您需要更多信息,我可以给您发电子邮件,
欢呼声