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

时间:2019-04-12 14:21:30

标签: api-platform.com

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

  1. 我按照所述生成了Book.class
  2. 添加CreateBookPublication
  3. 如果我调用API,则会收到以下错误:
  

(1/1)RuntimeException       无法自动装配服务“ App \ Controller \ CreateBookPublication”:方法“ __construct()”的参数“ $ bookPublishingHandler”具有类型   “ App \ Controller \ BookPublishingHandler”,但找不到此类。

你有什么主意吗? 我想为测试目的生成一个没有理论的自己的硬编码响应。

1 个答案:

答案 0 :(得分:0)

您似乎没有BookPublishingHandler类,必须自己实现,此docs示例未完全正常运行。

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

因此,在创建类文件BookPublishingHandler.php中创建目录src/Handler

<?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;

或者您也可以直接从控制器返回硬编码数组进行测试。