CakePHP 2.2:预先填充AJAX“更新”div?

时间:2012-08-20 18:48:44

标签: ajax forms cakephp

这个问题有点像n00b-ish,但我还没能在CakePHP文档中找到一个令人满意的解决方案,或者通过谷歌。

我试图制作一个简单的AJAX表单,它将更新数据库中的某些信息,并在页面上显示该信息。整个过程看起来很简单,除了我无法弄清楚如何预先填充更新div。

在我的视图代码中,我有

<div id="interestingContent"></div>
<?
  echo $this->Form->create();
  // create form fields here
  echo $this->Js->submit('Save', array('update'=>'#interestingContent');
  echo $this->Form-end();
  echo $this->Js->writeBuffer();
?>

这很好用,当提交表单时,我的控制器正确调用

$this->render('ajaxview','ajax')

并适当更新#interestingContent div。

所以,问题是:从数据库中预先填充#interestingContent的最佳方式是什么?当然,我可以在ajaxview.ctp内重复#interestingContent中的代码,但似乎必须有一种干嘛的方式来实现它。

我的第一个想法是让ajaxview.ctp成为一个元素,因为我基本上试图将一个视图嵌入到另一个视图中。但是,这对我来说似乎很苛刻,因为我的控制器会直接渲染元素的视图。我还考虑了2.1 / 2.2中的新视图块,但这看起来也不正确。

我确定这种事情一直都会出现。有一种普遍接受的方法吗?

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。它可能是hackish,但使用元素将完成这项工作。 首先,创建一个表示bd内容的元素。 在表单视图中,您使用该元素。 然后创建另一个只包含元素的视图。该视图将是对您的ajax请求的响应。通过使用元素,可以防止代码重复。