在运行时修改包含的模型

时间:2011-01-23 14:33:43

标签: cakephp cakephp-1.3

我正在构建一个包含行为和几个相关模型的插件。我的目标是使用该行为使开发人员尽可能轻松。我的完美世界让开发人员简单地将行为附加到任何相关模型并进行配置。

行为直接与其中一个模型交互,并且即时创建hasOne关联,但其他模型包含重要的支持数据。我想做的是通过修改Containable模型让该模型获取相关数据。

简而言之:

  • MyModelactsAs行为)在行为设置方法中绑定到顶级模型。
  • 支持模型直接与顶级模型相关联
  • MyBehavior::beforeFind中,我想确保在致电MyModel::find( ... )时,用户不必知道要求支持的模型数据。

我没有找到允许我在运行时修改这些内容的正确密钥。也许它甚至不可能,因为我希望基本上与另一种行为(Containable)进行交互。

任何想法都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

此代码会在运行之前自动将一些包含添加到查找中,您只需确保在可包含行为之前附加了您的行为,否则它将无效。对于一个行为的beforeFind回调只运行一次,所以一旦调用了containsable,就会添加类似的东西。我花了一段时间才弄明白。

https://github.com/infinitas/infinitas/blob/dev/core/contents/models/behaviors/contentable.php#L65