在cakephp的不同(不相关)模型中执行模型过程


executing model procedure within different (not related) model in cakephp

在一个cakephp网站中,我得到了以下模型

    项目
  • <
  • 类别/gh><
  • 主题/gh>等

在项目/项目上,我想展示一个捐赠表格。例如产品/项目/?id = 1234

<h1>item name</h1>
<p>item description</p>

<br />
<p>Would you like to make a donation?</p>
<form method="post" action="???">
<input type="text" name="ccNumer" />
<input type="text" name="ccExpiry" />
<input type="text" name="ccName" />
<input type="submit">
</form>

由于donationsitems没有关系,也可以在categories或其他任何地方使用,我不确定如何以正确的方式做到这一点。它应该是一个组件吗?

我不知道你使用的是哪个版本的cakePHP,所以我假设cakePHP 2。您可以在任何类中加载任何其他类,就像在普通PHP中一样。要包含另一个模型,您可以执行以下操作

App::uses('Donation', 'Model');     // first parameter being your ModelName and second the path

现在你可以通过实例化一个对象来使用模型的方法。

$donationObj = new Donation();
$donationObj->methodName();

更多信息请参阅官方文档。
http://book.cakephp.org/2.0/en/core-utility-libraries/app.html

要在应用程序中的任何地方轻松访问模型,请使用ClassRegistry::init()。(见:ClassRegistry)。ClassRegistry::init()将初始化准备使用的模型。

例如,访问一个模型的方法;

$result = ClassRegistry::init('Donation')->methodName();

或者获取一个Model的实例;

$MyModel = ClassRegistry::init('Donation');
$result  = $MyModel->methodName();
$resultB = $MyModel->anotherMethod();

添加App::uses(...)甚至不需要,ClassRegistry应该照顾它。