我刚开始使用 dunglas api 平台。我使用的是 v2.0.0-rc1,我添加了一个自定义操作来启用/禁用用户。
这是我为用户自定义的操作
<?php
namespace Zoef\UserBundle\Action;
use Zoef\UserBundle\Entity\User;
use Doctrine\Common\Persistence\ManagerRegistry;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Symfony\Component\Routing\Annotation\Route;
class UserAction
{
/**
* @Route(
* name="enabled_user",
* path="/users/{id}/enabled",
* defaults={"_api_resource_class"=User::class, "_api_item_operation_name"="enabled"}
* )
* @Method("PUT")
*/
public function __invoke(User $user)
{
if($user->isEnabled()) {
$user->setEnabled(false);
} else {
$user->setEnabled(true);
}
return $user;
}
}
当我转到我的文档时,自定义操作已添加并正常运行,但要使用此操作,我需要发送 4 个参数:电子邮件、全名、用户名、已启用。但我只想发送已启用的参数,用户的 ID 在路由中给出,但我无法在文档中找到如何更改参数。
有人可以帮我解决这个问题吗?
最佳答案
我试图启用/禁用相同的功能,我是这样做的:
我在 AppBundle\Controller\AddressController
中创建了一个自定义 Controller
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class AddressController extends Controller
{
public function enableAction($data)
{
$data->setActive(true);
$em = $this->getDoctrine()->getManager();
$em->persist($data);
$em->flush();
return $data;
}
}
在我的 routing.yml
中我有:
address_enable:
path: '/addresses/{id}/enable'
methods: ['PUT']
defaults:
_controller: 'AppBundle:Address:enable'
_api_resource_class: 'AppBundle\Entity\Address'
_api_item_operation_name: 'enable'
在我的实体中,我有:
* @ApiResource(
* itemOperations={
* "enable"={"route_name"="address_enable"},
* }
* )
然后我只是将它作为 URL/addresses/123/enable
发送,不需要发送更多参数,只需发送 id。
关于rest - 具有自定义参数的 API 平台自定义操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39868117/