制作CakePHP助手所需的建议

时间:2012-10-10 18:05:40

标签: oop cakephp cakephp-helper

我需要制作一个CakePHP助手,它涉及动态制作一些HTML。但是代码的一部分是进行1-2次数据库查询。这些查询对于这个帮助程序非常重要,因为它填充的所有文本都在数据库中。

根据MVC模式,我不应该在View(Helper)中进行数据库查询。我想知道这个案例的最佳设计是什么,因为我希望它与PHPUnit测试一致。

欢迎任何想法......

3 个答案:

答案 0 :(得分:2)

由于View作业纯粹是为了显示从Controller传递给它的(已经可用)信息,我认为它会是这样的:

你的控制器:

public function foo() {
    $bar = $this->MyModel->find('all');
    $this->set(array('bar' => $bar));
}

您的观点:

$result = $this->MyHelper->foo($bar);

答案 1 :(得分:1)

您可以创建一个组件:

/**
* 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);

答案 2 :(得分:0)

如果它可以是Element而不是Helper,您可以使用CakePHP的RequestAction [details here]来提取Element所需的数据。

然后,您可以将任何参数传递给元素,并使用这些参数传递给控制器​​,控制器进行模型调用。

这非常适合MVC,因为Element只显示视图,但是它指定了应该获取数据的位置(仍然使用模型来检索它),这使得它非常可重用。