我想通過JSON到我的控制器的添加()行動,但我得到的響應是從Index()行動或「空」的響應取決於條目在我的routes.php(如下所示)。CakePHP 3添加行動路線索引或返回空
我使用Firefox插件RESTClient實現測試/ JSON傳遞到我的行動:
方法:POST
網址:http://MyApp/notes.json(我的理解是基於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();
在此先感謝。
uggh見!我不能相信我錯過了這一點。凝視着我的臉,謝謝你! – mk97