我的表单中包含的输入并不属于任何模型。像“确认密码”和“我接受这些条件”等等。
这种情况的最佳做法是什么?
我想到了以下几种可能性:
我已经阅读了很多关于此问题的答案帖子,但要么答案是针对蛋糕的v1.x而且可能已经过时,或者人们建议将所有这些内容放在与当前控制器最密切关系的模型中。那么最佳做法是什么?
谢谢!
答案 0 :(得分:3)
我使用行为。
密码添加/编辑: https://github.com/dereuromark/tools/blob/master/Model/Behavior/PasswordableBehavior.php (见http://www.dereuromark.de/2011/08/25/working-with-passwords-in-cakephp/)
接受条件: https://github.com/dereuromark/tools/blob/master/Model/Behavior/ConfirmableBehavior.php (见http://www.dereuromark.de/2011/07/05/introducing-two-cakephp-behaviors/)
这允许我采用DRY方法,而不必在我使用它们的不同模型中重复一遍。我只是动态添加它们($this->Behaviors->load()
)或通过$actsAs
添加它们,并且可以使用扩展功能(类似于PHP5.4中的Traits)。
您可以将密码验证内容放入单个应用的APP用户模型中。但是,只要您维护多个应用程序,代码就必须在某些时候重复。这就是为什么我更喜欢这种行为方式。 但是,对于某些情况来说,在各自的模型中放弃验证既不可能也不可行。 只是不要创建临时模型或东西。这通常是错误的方式。