制作 CakePHP 助手所需的建议



我需要做一个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);

如果它可以是 Element 而不是 Helper,你可以使用 CakePHP 的 RequestAction [详情在这里] 来提取元素所需的数据。

然后,可以将任何参数传递给 Element,并使用这些参数传递给执行模型调用的控制器。

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

相关内容

  • 没有找到相关文章

最新更新