首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该使用什么-插件、组件或行为?

我应该使用什么-插件、组件或行为?
EN

Stack Overflow用户
提问于 2013-12-24 15:50:49
回答 1查看 374关注 0票数 3

在我的CakePHP应用程序中,我希望构建一个插件或组件,在保存之前使用我的数据数组,查看是否有要上载的文件(我将检查名为attachmentimagethumbgallery的字段)、上传它们、在需要时创建缩略图、在适当的表中写入条目以及使用条目ID修改数据数组。

我将在几个模型中使用它,因此我想要生成一个可重用的代码(我已经让它在AppModel中作为函数工作,但它非常混乱,我不喜欢它)。

我是应该制作一个连接到多个模型的组件,还是应该制作一个包含组件和模型的插件?

我更喜欢第二个选项,但我不知道如何将其提取出来(如何在插件组件中加载插件模型,或者在不需要重定向的情况下从插件组件调用插件控制器操作)。我也不知道这是不是正确的方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-24 16:48:48

这是一个非常常见的问题,因为了解组件、行为、插件和元素之间的区别需要一些时间。出于这个原因,我把这个答案做了一点解释--一旦你理解了它们,这个问题就是自我回答。

因为您提到了“先保存”触发器,这意味着您肯定会想要一种行为,因为它们具有可重用的回调方法。

问题是,“我是否需要比行为所能提供的更多的东西?”如果答案是肯定的,那么你可以制作一个插件,它可以包括你需要的任何其他东西。

如果答案是否定的,那么就没有足够的理由只为一个单一的行为制作一个完整的插件。

理解组件、行为、插件、(和元素)

组件

组件是控制器之间共享的逻辑包。

这是关于它的总结,真正-组件用于逻辑,您想要在控制器之间共享。这是“控制器”的关键。这些不用于与数据库相关的修改,因为这应该在模型中(每个MVC标准)。

组件的一个例子是,如果您想要在多个Controller中使用与文件上传相关的大量逻辑,则需要使用这些逻辑。它不是直接与数据库相关的(这将是一个模型),也不是用于创建HTML (参见视图) --这是您希望共享w/其他控制器的常见逻辑。

行为

模型行为是组织CakePHP模型中定义的一些功能的一种方法。

行为通常用于允许多个模型共享回调方法。例如,“可携带性行为”可能有一个"beforeSave()“回调,它接受"name”(或其他)字段中的任何内容,并将其转换为弹格并将其放入“段塞”字段。然后,任何作为行为的模型,只要保存下来,就会自动得到一个弹状体。

插件

插件是控制器、模型和视图作为打包应用程序插件发布的组合,其他人可以在其CakePHP应用程序中使用这些插件。

不管您想做什么,插件总是一个选项,但是插件的要点通常是将模型、视图、控制器、组件、behaviors...etc打包成可以跨多个项目使用的东西的方法。如果你确定这些东西只用于一个项目,你就可以在项目本身中拥有相同的文件--不需要插件。但是,如果您希望它易于重用,那么您可以将它们放入插件中。

元素

元素基本上是一个迷你视图,可以包含在其他视图中,在布局中,甚至在其他元素中。元素可以用于提高视图的可读性,将重复元素的呈现放在自己的文件中。

元素是其中唯一与视图相关的元素。例如,一个小模块框显示了您想要放置在很多页面上的联系人表单(可能在不同的位置)。

如果它出现在每个页面上,您可能会考虑将其包含在布局文件中,但是如果它可能存在或不存在,并且/或位于不同的location..etc中,那么元素是生成可重用视图代码的好方法。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20763470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档