在模型中使用cakephp组件

时间:2012-03-19 21:30:20

标签: php cakephp cakephp-1.3

如何在我的某个模型类中使用我在cakePHP中创建的组件?这可能吗?

如果是,请告诉我如何才能这样做

3 个答案:

答案 0 :(得分:26)

MVC框架中可能但非常不良做法。如果您认为需要在模型中使用该组件,则应该重新考虑并重新组织代码,因为某些事情是明确的错误

组件被认为在控制器之间共享代码,仅在控制器之间

要在模型之间共享可重用的代码,这将是一种行为。对于一个观点,它将是一个帮手。

如果你有一些非常通用的代码,它应该是一个lib或将它放在Utility文件夹/命名空间中或创建一个新的命名空间。检查那里的现有课程,以了解放在那里的内容。

未提供任何代码,因此无法就如何重构代码提供任何真正的建议。但是,您希望使用现有代码的方式不能在MVC上下文中工作,所以有时间重新思考您尝试做的任何事情的方法。

答案 1 :(得分:10)

可以在模型中使用组件(但如果这是推荐的或最佳实践,我无法发表评论)。

original source启发,在模型中使用名为“Geocoder”的组件的示例:

App::import('Component','GeoCoder');
$gc = new GeoCoderComponent(new ComponentCollection);

然后您可以使用$gc来调用组件的功能。

-

P.S。:我不想鼓励糟糕的编程实践,但有时候最后期限的压力(在现实世界的项目中)可能会迫使开发人员做出这样的决定。

答案 2 :(得分:-1)

@ AD7six

// Use anywhere
AuthComponent::user('id')

// From inside a controller
$this->Auth->user('id');

从他们提供的蛋糕PHP文档AuthComponent::user('id'),以便它可以在控制器以外的地方使用。

也许我需要更大的提示,但为什么我的模型不能访问ACL信息?