将项目添加到Array Collection API平台

时间:2019-02-20 11:45:10

标签: php symfony api-platform.com

我有一个Question实体,它与Answer关联“ OneToMany”。问题是如何使用path ='question / {id} / add_answer'创建自定义端点以添加对特定问题的答案。

2 个答案:

答案 0 :(得分:0)

在回送中,我们可以通过这种方式进行制作。

http:{
        verb:'patch',
        path:'/:questionId/add_answer/'
    }

答案 1 :(得分:0)

您实际上不需要为此的自定义端点。您可以将答案发布添加到答案问题中,如下所示:

{
  "question": {"id": 2},
  "message": "Hello, this is my answer for question with id 2"
}

您必须在要发布的答案属性(在这种情况下为消息)中的问题属性中的问题关系中添加帖子组。

如果仍然要为此创建自定义操作。您应该将此注释添加到下面的收集操作的问题实体中:

 *          "add_answer"={
 *              "method"="POST",
 *              "path"="/question/{id}/add_answer",
 *              "controller"=AddAnswerAction::class,
 *              "denormalization_context"={
 *                  "groups"={"add-answer"} //add this group to the properties that you want to post. You probable has to create and field in this entity. You dont need add it to the bbdd.
 *              }
 *          },

在Controller目录下,您必须创建AddAnswerAction.php并执行逻辑。像这样:

<?php

namespace App\Controller;

use Symfony\Component\HttpFoundation\Response;

final class AddAnswerAction
{

    public function __construct(
    ) {
    }

    /**
     * @return Response
     */
    public function __invoke(Question $question)
    {
         //logic
    }
}

顺便说一句。推荐第一个选项。