我有一些控制器,它使用相同的代码构思,只在呼叫模型
时有所不同例如:
在bookscontroller中:
public function abc(){ $this->Book->find(....); }
在categoriescontroller中:
public function abc(){ $this->Category->find(....); }
我觉得太浪费了。所以,请教我如何只编写一个函数,但它可以在任何控制器中调用并加载相同的模型。
非常感谢:)
答案 0 :(得分:1)
如果您认为需要干燥(不要重复自己),请使用组件。 他们可以在控制器之间共享代码。
在您的情况下,您可能还想查看crud plugin,它会进一步采用基本的CRUD。
答案 1 :(得分:0)
我觉得太浪费了。那么,请教我如何只写一个 函数,但它可以在任何控制器中调用并加载相同的模型。
您已回答了一半问题: DON' T 将代码放入控制器中。与数据操作和提取相关的所有内容都应该进入模型,而不是控制器。
假设您在书籍控制器和书籍属于类别,您可以从那里打电话:
$this->set('someCategoryData', $this->Book->Category->yourCustomMethod());
$this->set('categories', $this->Book->Category->find('list'));
需要来自类别控制器的书吗?
$this->set('book', $this->Category->Book->view($bookId));
您应该通过关联获取数据,并为您的数据检索和操作任务提供模型方法。
使用组件内部逻辑调用1000个模型的组件显然是错误的方法。 Read about SoC