Wiederverwendbarer benutzerdefinierter ApiPlatform-ControllerPhp

PHP-Programmierer chatten hier
Guest
 Wiederverwendbarer benutzerdefinierter ApiPlatform-Controller

Post by Guest »

Ich habe einen Controller, der die Dateiverwaltung im Zusammenhang mit Entitäten übernimmt. Ich möchte, dass dieser Controller wiederverwendbar ist:

Code: Select all

#[ApiResource(
itemOperations: [
'deleteApiFile' => [
'method' => 'DELETE',
'path' => '/foo/{id}/delete-file',
'read' => false,
'controller' => ApiFileDeleteController::class,
],
],
)]
class Foo { /* ... */ }

#[ApiResource(
itemOperations: [
'deleteApiFile' => [
'method' => 'DELETE',
'path' => '/bar/{id}/delete-file',
'read' => false,
'controller' => ApiFileDeleteController::class,
],
],
)]
class Bar { /* ... */ }
Und das ist der Controller:

Code: Select all

class ApiFileDeleteController
{
public function __invoke(string $id): void
{
// I have the $id now, how do I determine which entity it belongs to?
//
// Logic in this controller is always the same and always for an entity
$example = $this->em->getRepository($class)->find($id);
// How do I get $class?
}
}
Frage: Wie kann ich die ApiPlatform-Konfiguration im Controller (oder __construct) erhalten?
  • Ich könnte einen FooApiFileDeleteController und einen BarApiFileDeleteController erstellen, aber wenn ich in Zukunft erweitern möchte, muss ich weiterhin Controller hinzufügen, nur für den Klassennamen. Ich würde mir lieber jetzt ein wenig Mühe geben und muss mir in Zukunft darüber keine Sorgen mehr machen.
  • Ich könnte einen Parameter und einen Standardwert hinzufügen, aber dann könnte es von einem beeinflusst werden Benutzer, das möchte ich nicht.
  • Bearbeiten: Prüfe derzeit Prozessoren, basierend auf dieser ähnlichen Frage ApiPlatform v2.6 nicht unterstütze das leider

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post