是组件最佳实践来破坏控制器CakePHP中的代码

时间:2012-10-17 10:09:19

标签: cakephp controller

我正在使用CakePHP开发一个Web应用程序。我的申请流程如下:

  • 从表格视图上传文件。

  • Controller接收文件。现在根据文件的类型我做不同类型的处理。但最终提取的参数是相同的并保存到数据库中的同一个表中。在对每种类型的文件进行处理时,我的控制器变得非常冗长。我看到了一些帖子herehere鼓励使用component,但是当它想要在不同的控制器之间共享代码时,它会使用cakebook我猜它是类的实用类型。

我的问题是如何在不同的文件中分解我的controller代码,以便在我的控制器中收到特定类型的文件后,我可以重定向我的流程?

1 个答案:

答案 0 :(得分:1)

处理上传是数据处理,应该由此进入模型。我个人认为所有这些组件解决方案都不适合它。

如果您将上传处理移动到模型中,您可以拥有单个控制器并在模型方法中执行所有检查,然后可以调用关联模型或获取最终将处理您的文件类型的模型实例希望得到那个模特的对待。

随意查看我的FileStorage插件。阅读readme.md它可能会给你一些关于正确文件处理的更多想法。 IMO文件永远不应该直接附加到记录中,只需将路径保存在例如Users.avatar中,而应该将文件与用户Model:User hasOne Avatar相关联。处理文件和使用它们更容易,并且您可以统一处理所有文件。