【问题标题】:CakePHP 3 Add Action Routes to Index or Returns NullCakePHP 3 将动作路由添加到索引或返回 Null
【发布时间】: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


    【解决方案1】:

    除了序列化选项之外,您没有为视图设置任何变量,所以您得到null,因为没有什么要序列化的,即您缺少类似的东西

    $this->set(compact('note', 'message'));
    

    在你的行动中。

    如果没有资源路由,对/notes 的请求会映射到Notes 控制器的索引操作,因为这是连接回退路由的方式,没有操作=索引操作。

    另见

    【讨论】:

    • 呃!!我不敢相信我错过了。盯着我的脸,谢谢!!
    猜你喜欢
    • 1970-01-01
    • 2016-11-08
    • 2016-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多