1

我目前正在将我的一个最新应用程序升级到 cakePHP 2.3,它包含很多 JavaScript/AJAX 内容。

我有以下代码:

function do_stuff() {
  $html_content = $this->render('/elements/my_element');
  $status = 'success';

  $this->set('html_content', $html_content);
  $this->set('status', $status);

  $this->set('_serialize', array('html_content', 'status'));
}

我通过 AJAX 使用https://mydomain.tld/controller/do_stuff.json调用该函数

当然,我想接收一个带有 { 'html_content': '...', 'status': 'success' } 的 JSON 对象,

但我只收到 html_content。我认为,这是由于 $this->render() 调用造成的。

有人对此问题有提示/解决方案吗?

4

2 回答 2

3

我不知道它是黑客还是好的代码。但这在运行 CakePHP 2.3 时效果很好

function do_stuff() {

  // modified below two lines
  $this->View = $this->_getViewObject();
  $html_content = $this->View->render('/Elements/main_menu');

  $status = 'success';

  $this->set('html_content', $html_content);
  $this->set('status', $status);

  $this->set('_serialize', array('html_content', 'status'));
}
于 2013-07-10T07:58:10.160 回答
1

如果您想在另一个地方(EventListener、Model、Controller...)呈现视图,您可以执行以下操作:

$View = new View();
$html_content = $View->element('/Elements/main_menu', array(
    'foo'=>'bar'
));

然后,您可以序列化您的 html 内容。

于 2014-04-25T15:15:26.243 回答