CakePHP + Crud“添加”操作(POST)返回412前提条件失败

时间:2015-12-24 20:18:36

标签: php mysql json cakephp crud

CakePHP 3中的Add操作(POST方法)无效,它询问我已经在json消息中通知的字段。让我解释一下:

我的方案是什么:

  • 我正在使用WAMP,我的Apache被mod_rewrite激活;
  • 我正在使用作曲家,我安装了CakePHP 3和CRUD(friendsofcake / crud);
  • 我正确设置了MySQL数据库连接;
  • 我正在使用MySQL示例数据库sakila;
  • 我从Bake生成了Country模型;
  • 我更改了AppController类内容以加载CRUD插件,将其内容更改为:
namespace App\Controller;

use Cake\Controller\Controller;

class AppController extends Controller {

    use \Crud\Controller\ControllerTrait;

    public $components = [
        'RequestHandler',
        'Crud.Crud' => [
            'actions' => [
                'Crud.Index',
                'Crud.View',
                'Crud.Add',
                'Crud.Edit',
                'Crud.Delete'
            ],
            'listeners' => [
                'Crud.Api',
                'Crud.ApiPagination'
            ]
        ]
    ];
}
  • 我在app/config/routes.php中添加了Router :: extensions(['json','xml']);
  • 我添加了$ routes->资源('国家'),但没有删除app/config/routes.php中存在的默认路由;
  • 我的根网站地址为http://localhost:8080/mtag

如何发生问题:

我正在使用Postman for Chrome并将标头AcceptContent-Type设置为application/json并将POST发送到以下链接:http://localhost:8080/mtag/country,其中包含以下json内容:

{
  "country": "BlaBlaBla",
  "last_update": "2015-12-24"
}

但是我收到以下状态代码:412 Precondition Failed。 在返回的json中:

success: false,
data: {
  code: 412,
  message: "2 validation errors occured",
}

指示的缺失字段是countrylast_update,但我在json中通知了他们。我做错了什么?有没有人举例说明如何使用json正确使用CakePHP CRUD?

1 个答案:

答案 0 :(得分:0)

当我使用Postman测试cakePHP CRUD函数时,我不会将add_impl(std::is_same<T, int>()); 用于application/json,而是留空。对于身体部位,在使用Content-Type身体时,只需使用form-data而不是json对象。