我刚开始使用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个参数:email,fullname,username,enabled。但我只想发送启用的参数,并在路线中给出用户的ID,但我无法在文档中找到如何更改参数。
有人可以帮我这个吗?
答案 0 :(得分:2)
我试图使相同的启用/禁用,我这样做:
我在AppBundle\Controller\AddressController
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。
希望有所帮助