如何在 API 平台中"validate"删除请求



我想检查实体变量并检查是否允许删除实体。例如,如果关联的所有者实体链接到另一个实体,我想使删除无法进行。

我查看了 api-platform bu 的文档,我找不到有关我的问题的任何帮助。您授予删除或不删除的权利。我找不到如何控制它(相当于对 POST、PUT 和 PATCH 的验证(。

您可以使用 API 平台和 Symfony 表达式语言的访问控制功能来实现您想要的。通过这种方式,您可以编写非常复杂的表达式。

我希望这个例子能说清楚。 用户是当前登录的用户。 对象是用户尝试删除的资源。

/**
* @ApiResource(
*   itemOperations={
*     "delete"={
*       "access_control"="is_granted('ROLE_USER') and object.getUsers().contains(user),
*     }
*   }
* )
*/
class Entity
{
/**
* @var ArrayCollection
*
* @ORMOneToMany(targetEntity="User", inversedBy="entities")
* @ORMJoinTable(name="entity_users")
*/
private $users;
/**
* @return ArrayCollection
*/
public function getUsers(): ArrayCollection
{
return $this->users;
}
}

在这种情况下,只有存储在用户实体数组中的用户才能删除此资源。

最新更新