Gibt es eine Möglichkeit, ein Modell im AppController agnostisch abzurufen/zu manipulieren, um DRYness in den Controllern der Anwendung zu vermeiden? Zum Beispiel:CakePHP: agnostische Modellmanipulation
//AppController.php
public function find_all()
{
return $this->AppModel->find('all');
//I know this does not work but to give you the idea
}
Und bei Kindern Controllern der App:
//FoosController.php
public function some_function()
{
$data = parent::find_all();
//List of Foo entities
}
Oder:
//BarsController.php
public function some_other_function()
{
$data = parent::find_all();
//List of Bar entities
}
Gibt es eine Lösung CakePHP bieten kann? Oder vielleicht mit Reflektion?
Vielen Dank für Ihre Hilfe!
Sind Sie sicher, dass Sie _problez DRYness wollen, würde ich denken, dass Sie _achieve_ es wollen? Was genau willst du nicht wiederholen? Sind das wirklich nur Aufrufe von 'Model :: find()', oder ist da tatsächlich mehr Komplexität involviert? Wenn letzteres der Fall ist, dann machen Sie bitte weiter, denn das Umschließen eines einfachen 'Model :: find()' -Aufrufs macht nicht viel Sinn. – ndm
In der Tat ist es in der Tat mehr als die nur das Modell: find() -Methode ... Grundsätzlich sind alle CRUD-Operationen, die ich an Modellen durchführe, genau die gleichen, weshalb ich sie gerne umgestalten würde der AppController direkt. Was ich wirklich erreichen will, ist ein abstraktes Modell zu manipulieren. Mit Controller: loadModel ($ this-> modelClass) wird das richtige Modell geladen, aber wie kann ich dann dieses Modell verwenden, um die Methoden Model: save() oder Model: find() aufzurufen? –
Mmmm, ich bin mir immer noch nicht sicher, ob ich dein tatsächliches Problem verstehe ... willst du vielleicht fragen, wie man den Wert von '$ this-> modelClass' benutzt, um auf eine Objekteigenschaft zuzugreifen? – ndm