创建自定义操作和控制器示例不起作用

Creating Custom Operations and Controllers Example does not work

我刚刚尝试了 https://api-platform.com/docs/core/operations/#recommended-method 示例。

  1. 我按照描述生成了 Book.class
  2. 添加CreateBookPublicationclass
  3. 如果我调用 API 我收到以下错误:

(1/1) RuntimeException Cannot autowire service "App\Controller\CreateBookPublication": argument "$bookPublishingHandler" of method "__construct()" has type "App\Controller\BookPublishingHandler" but this class was not found.

你有什么想法吗? 为了测试目的,我想生成一个自己的硬编码响应,没有原则。

看起来你没有BookPublishingHandler class,你必须自己实现它,这个文档示例不是完全有效的演示。

错误说 DI 试图找到 App\Controller\CreateBookPublication 但它不存在或未注册为服务。我假设您使用的是默认配置,它是自动在 src/ 目录中找到的注册服务。

所以创建目录src/Handler,在里面创建class文件BookPublishingHandler.php

<?php

namespace App\Handler;

use App\Entity\Book;

class BookPublishingHandler
{
    public function handle(Book $book): array
    {
        // your logic for publishing book or/and eg. return your custom data
    }
}

并将导入添加到您的 CreateBookPublication 控制器

<?php

namespace App\Controller;

use App\Handler\BookPublishingHandler;

或者您可以直接从控制器测试 return 硬编码数组。