Php Symfony api平台使用控制器

Php Symfony api平台使用控制器,php,api,symfony,api-platform.com,Php,Api,Symfony,Api Platform.com,我在symfony 4中使用api平台,我有一个问题 我想知道如何使用api平台创建控制器,并在get中创建2条路由 我向您展示我目前所做的工作: 我的控制器: /** * @var UnedicPublicationOrderRepository */ private $publicationOrderRepository; public function __construct(UnedicPublicationOrderRepository $publicationOrderRepo

我在symfony 4中使用api平台,我有一个问题

我想知道如何使用api平台创建控制器,并在get中创建2条路由

我向您展示我目前所做的工作:

我的控制器:

/**
 * @var UnedicPublicationOrderRepository
 */
private $publicationOrderRepository;

public function __construct(UnedicPublicationOrderRepository $publicationOrderRepository)
{
    $this->publicationOrderRepository = $publicationOrderRepository;
}


public function __invoke()
{
    $cible = $this->publicationOrderRepository->findAll();

    return $cible;
}
和我的出版实体

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use ApiPlatform\Core\Annotation\ApiResource;

/**
 * UnedicPublicationOrderController
 *
 * @ApiResource(
 *     collectionOperations={"get"={"method"="GET"}},
 *     itemOperations={
 *     "get"={"method"="GET", "path"="/publication/{cible}"},
 *     }
 * )
 * @ORM\Table(name="foo")
 * @ORM\Entity

要将特定控制器用于自定义操作,需要将该控制器添加为选项

use App\Controller\UnedicPublicationOrderController;

/**
 * @ApiResource(
 *     itemOperations={
 *         "customGet"={
 *             "method"="GET",
 *             "path"="/publication/{cible}",
 *             "controller"=UnedicPublicationOrderController::class,
 *         },
 *     },

可以在

中看到一个完整的示例,要为自定义操作使用特定的控制器,您需要添加控制器作为选项

use App\Controller\UnedicPublicationOrderController;

/**
 * @ApiResource(
 *     itemOperations={
 *         "customGet"={
 *             "method"="GET",
 *             "path"="/publication/{cible}",
 *             "controller"=UnedicPublicationOrderController::class,
 *         },
 *     },

如果您的控制器返回一个集合,您需要在collectionOperations中添加路由,否则请在itemOperations部分中注册路由,可以在

中看到完整的示例。 不要忘记在实体中导入控制器类

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use ApiPlatform\Core\Annotation\ApiResource;
use App\Controllers\UnedicPublicationOrderController; // import controller
/**
 * UnedicPublicationOrderController
 *
 * @ApiResource(
 *     collectionOperations={
            "get"={"method"="GET"},
            "get_publication_order"={
               "path"="/publication_orders/all",
               "method"="GET",
               "controller"=UnedicPublicationOrderController::class     
             }
   },
 *     itemOperations={
 *           "get"={"method"="GET", "path"="/publication/{cible}"},
 *     }
 * )
 * @ORM\Table(name="foo")
 * @ORM\Entity

您还可以查看文档以了解更多示例

如果控制器返回一个集合,您需要在collectionOperations中添加路由,否则请在itemOperations部分注册它。 不要忘记在实体中导入控制器类

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use ApiPlatform\Core\Annotation\ApiResource;
use App\Controllers\UnedicPublicationOrderController; // import controller
/**
 * UnedicPublicationOrderController
 *
 * @ApiResource(
 *     collectionOperations={
            "get"={"method"="GET"},
            "get_publication_order"={
               "path"="/publication_orders/all",
               "method"="GET",
               "controller"=UnedicPublicationOrderController::class     
             }
   },
 *     itemOperations={
 *           "get"={"method"="GET", "path"="/publication/{cible}"},
 *     }
 * )
 * @ORM\Table(name="foo")
 * @ORM\Entity

您还可以查看文档中的更多示例

我没有解决方案:/i没有解决方案:/i如何创建自己的函数而不必通过调用方法?@CrownBackend您可以创建一个常用的Symfony控制器并在routes中定义路由。Yamlh如何创建自己的函数而不必通过调用方法__调用方法?@crownbend您可以创建一个常用的Symfony控制器,并在routes.yaml中定义路由