我使用的是Cake 2.1,它帶有新的JsonView。我想要做的是POST到我的控制器中的方法並呈現一個html片段,以便我可以將它作爲json中的值返回。在CakePHP中使用JsonView返回HTML片段
以前我會做這樣的事情:
public function ajaxSubmit() {
if (!$this->request->is('ajax')) {
$this->redirect('/');
} else {
$this->autoRender = $this->layout = false;
$message = 'Please enter a message';
$this->set('message');
$errorFragment = $this->render('/Elements/errors/flash_error');
$toReturn = array('errorFragment' => $errorFragment);
return json_encode($toReturn);
}
}
其中僅發回一個特定flash_error
元素的HTML片段,使得我不能有多個key => values
在一個標準的JSON對象被送回。我希望能夠發送html片段和純文本爲json。
所以我的問題是,我怎樣才能渲染一個HTML元素,並使用Cake 2.1提供的JsonView從我的控制器中發回(key => value pair)作爲json?我已經在我的路線文件Router::parseExtensions('json');
中設置了,並且我在我的AppController中包含了RequestHandler
組件。
嗯,謝謝。這似乎工作,但它似乎非常笨重。無論如何,ajaxSubmit.ctp有什麼意義?這似乎是它存在的唯一原因是能夠調用該'flash_error'元素... –
這就是爲什麼你可能會更好使用AJAX和正常提交相同的動作。 假設你的正常提交做同樣的事情,那麼你可以將這個行爲減少到2行代碼。 –
使用RequestHandler和parseExtensions的目的是它會自動切換到數據視圖。這就是爲什麼你需要ajaxSubmit.ctp。如果你給我一個更完整的例子,那麼我可以幫助更多。 –