1

这个问题有点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')

并适当地更新#interestingContentdiv。

#interestingContent所以,问题是:从数据库预填充的最佳方法是什么?当然我可以从ajaxview.ctp内部重复代码#interestingContent,但似乎必须有一种 DRY 方法来做到这一点。

我的第一个想法是制作ajaxview.ctp一个元素,因为我基本上是在尝试将一个视图嵌入到另一个视图中。不过,这对我来说似乎很骇人听闻,因为我的控制器将直接渲染元素的视图。我还考虑了 2.1/2.2 中的新视图块,但这似乎也不对。

我敢肯定,这种事情总是会出现。有没有普遍接受的方法来做到这一点?

4

1 回答 1

1

我有同样的问题。这可能有点骇人听闻,但使用一个元素就可以完成这项工作。首先,创建一个元素来表示您的 bd 内容。在您的表单视图中,您使用该元素。然后创建另一个仅包含元素的视图。此视图将是对您的 ajax 请求的响应。通过使用元素,您可以防止代码重复。

于 2012-08-20T19:14:55.793 回答