CakePHP: агностическая модель манипуляции

Есть ли способ извлекать / манипулировать моделью независимо в AppController, чтобы избежать засухи в контроллерах приложения? Например:

//AppController.php
public function find_all()
{
   return $this->AppModel->find('all'); 
   //I know this does not work but to give you the idea
}

А у детей контроллеры приложения:

//FoosController.php
public function some_function()
{
   $data = parent::find_all();
   //List of Foo entities
}

Или же:

//BarsController.php
public function some_other_function()
{
   $data = parent::find_all();
   //List of Bar entities
}

Есть ли решение, которое может предложить CakePHP? Или используя отражение, может быть?

Спасибо за помощь!

1 ответ

Решение

Я нашел способ достичь того, что искал:

//AppController.php
public function find_all()
{
   return $this->{$this->modelClass}->find('all'); 
}

ПРИМЕЧАНИЕ. Если вы выполняете повторяющиеся операции CRUD без какой-либо реальной бизнес-логики или авторизации (как я в настоящее время), вы также можете использовать эти строки кода для сохранения энтеитов, не зная о модели, которая обрабатывается в AppController,

//AppController.php
if (!$this->{$this->modelClass}->save($this->request->data))
{
   $validationErrors = $this->{$this->modelClass}->validationErrors;
   //error logic here
}
else
{
   //success logic here
}
Другие вопросы по тегам