3

我刚开始使用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 在路由中给出,但我无法在文档中找到如何更改参数。

有人可以帮我弄这个吗?

4

1 回答 1

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。

于 2017-01-24T15:29:08.560 回答