0

有没有办法在 AppController 中不可知地获取/操作模型,以避免应用程序控制器中的 DRYness ?例如:

//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 可以提供的解决方案?或者使用反射,也许?

谢谢您的帮助 !

4

1 回答 1

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
}
于 2016-05-19T13:06:22.467 回答