【发布时间】:2010-12-19 13:21:59
【问题描述】:
我正在创建一个 Web 应用程序,它基本上是一个非常专业的 CMS。它是用 PHP 和 Codeigniter 编写的(虽然细节并不重要),并且是根据 MVC 模式的结构。
此网络应用程序中的许多实体都需要能够上传,例如页面、文章等。
我有一个单独工作的上传控制器。它的功能是我们有一个媒体表,它记录有关上传的元数据,然后是许多其他表,它们将特定媒体项映射到文章/页面等,例如articles_media、pages_media 等。这些表只是包含一个media_id 和一个article/page/etc_id
我显然不想在整个应用程序中复制和粘贴上传代码,因此当您在 article_create 视图上时,例如,有一个指向上传控制器的链接在弹出窗口中打开,允许您上传图片。
问题在于,在您要上传图片时,您实际上并没有创建文章/页面等,因此没有可以传递给上传控制器以映射上传媒体的 ID到特定的文章/页面等。
我感觉完全疯狂的“解决方案”是在需要上传的模型中添加一个 is_published 字段,当您进入创建页面时立即使用除 is_published = 0 之外的所有空白值创建它,然后我有我可以传递给上传者的 ID。
这确实有效,但感觉不是最理想的,对于初学者来说,我将 [可能] 最终在数据库中有许多空白行。
明智的人通常如何处理这个问题?我不需要任何具体的实施帮助,我会自己找出所需的 PHP,但我的大脑似乎无法为整体问题提出合乎逻辑的解决方案。
我认为我在 media、articles_media 和 article 之间的映射很简洁,但也许这也是问题的一部分......?
理论上我希望用户能够上传任意数量的媒体文件,但在实践中这实际上意味着非常有限,因为你只能上传一篇文章等。
我希望得到知情的意见 - 我假设对于这个问题有一个 [相对] 直接的“最佳实践”,我自己似乎无法想出。
【问题讨论】:
标签: php architecture codeigniter web-applications