2010-05-28 69 views
1

我正在尝试编写一个行为,让我的模型可以访问我设计的一个简单的工作流引擎。工作流引擎本身就像CakePHP模型一样工作,工作流数据存储在数据库中,就像其他模型数据存储一样。我可以在CakePHP的行为中使用特定模型吗?

基本上,我想要做的就是在基本模型上调用动作时使用工作流模型。例如,如果对Posts执行edit()动作,那么Post(附带行为)将以自己的模型名称,动作和id作为参数(例如[Post,edit,1])触发工作流行为。 。然后,该行为将调用Workflow模型的功能,该模型具有在邮件上编辑时执行的操作的记录(例如,向订阅该邮件的用户发送电子邮件)并将其执行。

我的问题是,从行为内调用模型/控制器方法的正确方法是什么?从行为中使用的模型始终为Workflow,但行为应该可以从基本上任何模型(除了Workflow本身之外)使用。我知道我可以直接从行为运行SQL查询,但当然这不是蛋糕方式:-)

或者,我是否以错误的方式解决这个问题?我希望在数据库中存储一定数量的逻辑,以便可以由不同的用户轻松配置,并且不会在模型/控制器逻辑本身内进行无休止的配置检查,以便将来可以轻松地添加/更改/删除工作流程步骤。

回答

2
App::import('Model', 'YourModel'); 
$obj = new YourModel(); 

http://book.cakephp.org/view/938/Loading-Models

+0

感谢您的链接。这是行为中的“正确”吗? – 2010-06-03 20:38:28

+1

这是导入未附加到行为的模型的正确方法。如果你需要附加在行为上的模型,那么你将引用传递给行为的方法:'函数doSomething(&$模型){/ *在这里做某事* /}'。你可以在这里找到更多关于创建行为的信息:http://book.cakephp.org/view/1073/Creating-Behaviors。 – bancer 2010-06-03 22:22:35

相关问题