Платформа Api: операции переопределения, включая процесс сохранения - PullRequest
0 голосов
/ 11 января 2020

Я работаю с: + Symfony 4.4 (lts) + API Platform 2.5 (текущая версия)

И я пытаюсь переопределить операцию удаления, чтобы сущность не всегда удалялась Я должен проверить, использовалась ли сущность в качестве внешнего ключа с другой сущностью, поэтому в этом случае я не удаляю, я просто устанавливаю свойство flag моей сущности на false, если нет, я удаляю сущность.

Но проблема в документах по платформе API, переопределение операции - просто изменение сущности до ее сохранения.

src / Entity / Product:

/**
 * @ApiResource(
 *     itemOperations={
 *         "get",
 *         "delete"={
 *             "controller"=ProductDeleteAction::class,
 *         }
 *     })
 */
class Product
{
    //...
}

src / Controller / ProductDeleteAction

class ProductDeleteAction
{
    private $manager;

    public function __construct(EntityManagerInterface $manager)
    {
       $this->manager= $manager;
    }

    public function __invoke(Product $product): Product
    {
         $categories = $this->manager->getDoctrine()
            ->getRepository(Categorie::class)->findBy('product',$product);

         if(count($categories)){
             $product->setActive(false);
             return $product;
             //I want that the product been persisted But the product is deleted finallay because it's delete operation :(
         }else{
             return $product;
         }

    }
}

1 Ответ

0 голосов
/ 11 января 2020

Вы должны использовать Персистеры данных :

https://api-platform.com/docs/core/data-persisters/

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