Php Symfony api平台使用控制器
我在symfony 4中使用api平台,我有一个问题 我想知道如何使用api平台创建控制器,并在get中创建2条路由 我向您展示我目前所做的工作: 我的控制器: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
/**
* @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中定义路由