$ data является нулевым в функции __invoke () с пользовательской операцией POST - PullRequest
0 голосов
/ 25 октября 2018

Я создал операцию, персонализированную типа POST, методом, описанным в документации платформы api.Система работает, но объект $ data функции __ invoke () остается нулевым (все свойства этого объекта нулевые)

Вот код класса Step:

namespace App\Entity\Api;

use ApiPlatform\Core\Annotation\ApiResource;

use App\Controller\Api\Step\Create as StepCreate;

/**
 * Class Step
 * @ApiResource(itemOperations={
 *     "get",
 *     "special"={
 *          "method"="POST",
 *          "path"="/step/create",
 *          "controller"=StepCreate::class,
 *          "defaults"={"_api_receive"=false},
 *     }
 * })
 *
 * @package App\Entity\Api\Step
 */
class Step {

    /**
     * @var null|string
     */
    private $title;

    /**
     * @var null|string
     */
    private $description;

    /**
     * @var float
     */
    private $latitude;

    /**
     * @var float
     */
    private $longitude;

    /**
     * @var int
     */
    private $tripId;


    ...

}

И код контроллера:

namespace App\Controller\Api\Step;

use App\Entity\Api\Step;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;

class Create {

    /**
     * @param \App\Entity\Api\Step $data
     * @return mixed
     */
    public function __invoke(Step $data) {

        dump($data);
        return $data;
    }

}

А вот и результат дампа ($ data):

<code><pre>
        <abbr title="App\Entity\Api\Step">Step</abbr> {
        <samp>
    -
            <span title="Private property defined in class:&#10;`App\Entity\Api\Step`">title</span>:
            <span class=sf-dump-const>null</span>
    -
            <span title="Private property defined in class:&#10;`App\Entity\Api\Step`">description</span>:
            <span class=sf-dump-const>null</span>
    -
            <span title="Private property defined in class:&#10;`App\Entity\Api\Step`">latitude</span>:
            <span class=sf-dump-const>null</span>
    -
            <span title="Private property defined in class:&#10;`App\Entity\Api\Step`">longitude</span>:
            <span class=sf-dump-const>null</span>
    -
            <span title="Private property defined in class:&#10;`App\Entity\Api\Step`">tripId</span>:
            <span class=sf-dump-const>null</span>
        </samp>}
    

Может ли кто-нибудь помочь мне с этим?

спасибо:)

1 Ответ

0 голосов
/ 29 октября 2018

Это ожидаемое поведение.Если вы хотите получить свой Step объект, вам нужно избавиться от "defaults"={"_api_receive"=false},

см. https://api -platform.com / docs / core / operations # entity-retrieval

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...