SYMFONY,API PLATFORM 如何向序列化对象添加编辑和显示链接

SYMFONY, API PLATFORM how to add edit and show links to the serialized object

我正在使用 SYMFONY 和 API PLATFORM 来创建 REST API。

我有一个项目实体作为 API 资源 :

class Project
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=255)
     */
    private $reference;

    /**
     * @ORM\Column(type="string", length=255, unique=true)
     * @Gedmo\Slug(fields={"reference"})
     */
    private $slug;

    /**
     * @ORM\Column(type="datetime")
     * @Gedmo\Timestampable(on="create")
     */
    private $createdAt;

    /**
     * @ORM\Column(type="datetime")
     * @Gedmo\Timestampable(on="update")
     */
    private $updatedAt;
    /**
     * @ORM\ManyToOne(targetEntity=User::class, inversedBy="projects")
     * @ORM\JoinColumn(nullable=false)
     */
    private $user;

    /**
     * @ORM\ManyToOne(targetEntity=Type::class, inversedBy="projects")
     * @ORM\JoinColumn(nullable=false)
     */
    private $type;

    /**
     * @ORM\ManyToOne(targetEntity=Status::class, inversedBy="projects")
     * @ORM\JoinColumn(nullable=false)
     */
    private $status;

通过邮递员我得到:

我如何添加编辑和显示路由来获取像这样的序列化对象:

"hydra:member": [
        {
           ...
            "status": "/api/statuses/6",
             "edit": "<a href='link_to_edit'>edit</a>", // add a link to edit
              "show": "<a href='link_to_show'>show</a>" // add a link to show
        },

知道我不想向实体属性添加编辑和显示或映射它们

感谢您的帮助

从技术上讲,您已经有了编辑和显示路由(如果您没有自定义它们):您只需对每个对象的 @id 字段的值发出 PUT 或 GET 请求。

如果您想向未映射的实体添加额外的 属性,您可以这样做:

/**
 * @SerializedName("edit_route")
 *
 * @Groups({"projects:read"}))
 *
 * @return string
 */
public function getEditRoute()
{
    return 'your_edit_route';
}

虽然我不会 return HTML 在这种领域,特别是如果你的路线不是 GET,并且使用你的应用程序 API 可能不会使用 HTML,所以你最好 return 使用最简单的值并让他们用它来做他们的事情。