【发布时间】:2017-03-29 21:42:36
【问题描述】:
我正在尝试将 JSON 传递给我的控制器的 Add() 操作,但我得到的响应要么是来自 Index() 操作的响应,要么是“null”,具体取决于我的 routes.php 中的条目(如下所示)。
我正在使用 Firefox 插件 RESTClient 来测试/将 json 传递给我的操作:
方法:POST
网址: http://MyApp/notes.json(我的理解是这应该调用 Add action based on cakephp docs )
JSON:
{
"post_id":"123",
"note":"hello world"
}
当我的 routes.php 中有以下内容时,响应为“null”
Router::scope('/', function ($routes) {
$routes->extensions(['json']);
$routes->resources('Notes');
从此范围中删除 $routes->resources('Notes'); 会返回来自索引操作的响应,并且在响应中返回 Notes 模型中的所有项目。
此外,当我通过 Crud.Add 在 api 前缀中实现这一点时,我得到了有效的结果。话虽如此,试图了解我在 routes.php 中的错误或添加可能导致 null 或路由到索引操作的操作。
添加动作:
public function add()
{
$note = $this->Notes->newEntity();
if ($this->request->is('post')) {
$note = $this->Notes->patchEntity($note, $this->request->data);
if ($this->Notes->save($note)) {
$message = 'Saved';
} else {
$message = 'Error';
}
}
$this->set('_serialize', ['note', 'message']);
}
Routes.php:
<?php
use Cake\Core\Plugin;
use Cake\Routing\Router;
Router::defaultRouteClass('DashedRoute');
Router::extensions(['json'], ['xml']);
Router::prefix('api',function($routes) {
$routes->extensions(['json','xml']);
$routes->resources('Notes');
});
Router::scope('/', function ($routes) {
$routes->extensions(['json']);
$routes->resources('Notes');
$routes->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']);
$routes->connect('/pages/*', ['controller' => 'Pages', 'action' => 'display']);
$routes->fallbacks('DashedRoute');
});
Plugin::routes();
提前致谢。
【问题讨论】:
标签: cakephp cakephp-3.0