我需要制作一个 CakePHP 助手,其中涉及动态制作一些 HTML。但是部分代码是进行1-2个数据库查询。这些查询对于这个助手来说非常重要,因为它填充的所有文本都在数据库中。
根据 MVC 模式,我不应该在视图(助手)中进行数据库查询。我想知道这种情况下最好的设计是什么,因为我希望它也与 PHPUnit 测试保持一致。
任何想法都会受到欢迎...
我需要制作一个 CakePHP 助手,其中涉及动态制作一些 HTML。但是部分代码是进行1-2个数据库查询。这些查询对于这个助手来说非常重要,因为它填充的所有文本都在数据库中。
根据 MVC 模式,我不应该在视图(助手)中进行数据库查询。我想知道这种情况下最好的设计是什么,因为我希望它也与 PHPUnit 测试保持一致。
任何想法都会受到欢迎...
由于这项View
工作纯粹是为了显示从 传递给它的(已经可用的)信息Controller
,我认为它会是这样的:
你的控制器:
public function foo() {
$bar = $this->MyModel->find('all');
$this->set(array('bar' => $bar));
}
您的看法:
$result = $this->MyHelper->foo($bar);
您可以创建一个组件:
/**
* Set data info
* @access public
* @return void
*/
public function setData()
{
$data = $this->Model->find('first', $params);
$this->Controller->set('data', $data);
}
并在布局中打印助手:
echo $this->MyNewHelper->someHtml($data);
如果它可能是一个元素而不是一个助手,你可以使用 CakePHP 的 RequestAction [详情在这里]来拉取元素所需的数据。
然后,您可以将任何参数传递给 Element,并使用这些参数传递给执行模型调用的控制器。
这非常适合 MVC,因为 Element 只显示视图,但它指定了它应该从哪里获取数据(仍然使用模型来检索它),这使得它非常可重用。