CakePHP' autoRender = false'不起作用。仍然提供缺少视图错误

时间:2015-07-02 15:02:01

标签: cakephp

我正在使用cakephp 2.0.4(在现有项目中进行更改)

我的控制器功能是..

class PagesController extends AppController {
    public function getlocations($string = ''){
        $this->autoRender = false;             
        $aResult = array(0=>'Florida', 1=>'London');
        echo json_encode($aResult);
    }
}

我也试过$ this-> autoLayout = $ this-> autoRender = false;

当我在浏览器mysite / app / pages / getlocations中直接调用此操作时,会出现以下错误

View file "/home/mysite/public_html/testing/app/View/Pages/g.ctp" is missing.

2 个答案:

答案 0 :(得分:2)

创建/View/Ajax/json.ctp视图

<?php
if(!empty($data)) echo json_encode($data);

然后在行动中:

$this->set('data', array(0=>'Florida', 1=>'London'));
$this->layout = false;
$this->render('/Ajax/json');

答案 1 :(得分:0)

你也可以按照Cake方式使它工作。

首先,您必须将以下代码添加到路径文件中:

Router::parseExtensions('json');

接下来,在控制器中将“RequestHandler”添加到组件数组中,并在getlocations函数中序列化结果:

public $components = array('RequestHandler');

public function getlocations($string = ''){
    $this->set('aResult', array(0=>'Florida', 1=>'London'));
    $this->set('_serialize', 'aResult');
}

最后,您可以在浏览器中看到结果 mysite / app / pages / getlocations.json

这样做CakePHP将自动添加application / json标头。

更多信息:http://book.cakephp.org/2.0/en/views/json-and-xml-views.html