Sua visita nos ajuda a continuar oferecendo o melhor para você! itemprop="text">
Eu tento utilizar filtros com Symfony 6 + api apltform 3 com rota personalizada. Mas unicamente a paginação Sua visita nos ajuda a continuar oferecendo o melhor para você! aplicada. A rota padrão está funcionando muito
Meu código atual:
Entidade:
#[ORMTable(name: 'stb_maxi_dev.offer_demand')]
#[ApiResource(
operations: [
new GetCollection(),
new Get(),
new Post(),
Sua visita nos ajuda a continuar oferecendo o melhor para você! new Patch(),
new GetCollection(
name: 'api_export_offers',
controller: OfferController::class,
output: false
)
],
routePrefix: '/maxi',
normalizationContext: ['groups' => ['offers:list', 'status:list', 'source:list', 'tn:list', 'as:list', 'country:list', 'category:list', 'product:list', 'logs:list']],
denormalizationContext: ['groups' => ['offers:write']],
paginationEnabled: false
)]
#[ApiFilter(NumericFilter::class, properties: ['od_status'])]
#[ApiFilter(SearchFilter::class, properties: [
'od_source.id' => 'exact',
'od_country.id' => 'exact',
'od_category.id' => 'exact',
'od_activity_sector.id' => 'exact',
'od_product.id' => 'exact',
'od_team.id' => 'exact',
'od_offer_status.id' => 'exact',
'od_rfq_status.id' => 'exact',
])]
#[ApiFilter(DateFilter::class, properties: ['od_creation_date', 'receivedAt', 'od_date_acknowledgment_receipt', 'date_conctacting'])]
#[ApiFilter(GroupFilter::class, arguments: ['overrideDefaultGroups' => false])]
class OfferController extends AbstractController
{
private $collectionProvider;
private $entityManager;
public function __construct(CollectionProvider $collectionProvider, EntityManagerInterface $entityManager)
{
$this->collectionProvider = $collectionProvider;
$this->entityManager = $entityManager;
}
#[Route('/maxi/offers/export', name: 'api_export_offers', methods: ['GET'])]
public function exportOffers(Request $request, Utils $utils)
{
$filters = $request->query->all();
$operation = new GetCollection(class: OfferDemand::class);
$offerdemands = $this->collectionProvider->provide($operation, [], ['filters' => $filters]);
// CODE TO EXPORT IN XSLX
return $this->file($temp_file, $fileName, ResponseHeaderBag::DISPOSITION_INLINE);
}
}
É provável utilizar todos os filtros porquê o ponto de extremidade de coleta da plataforma de API padrão?
Obrigado !
Cedrico
Tags:
Crédito: Manadeira Original