所以我正在尝试创建一个Android移动应用程序,我正在使用CakePHP作为我的服务器端。我不需要任何HTML视图,我只会响应JSON对象。
我已经看了http://book.cakephp.org/2.0/en/core-libraries/components/request-handling.html#RequestHandlerComponent并且我已经创建了这个:
class LocationsController extends AppController
{
public $helpers = array('Html', 'Form');
public $components = array('RequestHandler');
function index()
{
$locations = $this->Location->getNearest();
$this->set(compact('locations'));
$this->set('_serialize', array('locations'));
}
}
我已将此添加到我的routes.php
:
Router::mapResources('locations');
Router::parseExtensions('json');
当我从默认的CakePHP布局样式中运行它时,没有显示任何内容。如果我删除index.ctp视图文件,我收到一个错误,它找不到视图文件。为什么它仍然需要一个视图文件?我认为使用序列化方法它不需要视图。我尝试过查看Google Chrome开发人员控制台,但没有包含JSON对象的响应。但是,MySQL的表现非常好。
答案 0 :(得分:0)
将$this->render(false);
放在
public $components = array('RequestHandler');
和
function index()
现在它不再需要index.ctp文件了。
有关详细信息,请参阅this link。
答案 1 :(得分:0)
我只是使用REST API做了同样的事情,因为我想要JSON中的响应。 我做的是使用Chrome高级休息客户端。在那里,我通过使用适当的GET方法向我的localhost服务器发出请求,并且它成功了。
喜欢:GET /users/view/103.json
您将得到以下答复:
{"users":{"User":{"id":"103","username":"abc","password":"xyz",
"email-id":"abc@xyz.com"}}}