【发布时间】:2014-11-02 01:20:00
【问题描述】:
我正在处理一个 CakePHP 项目,我意识到我的很多控制器都有几乎相同的代码。我决定我应该尝试制作一种“BaseController”并让其他控制器扩展它......就像这样:
class BaseController extends AppController {
public $components = array(
'RequestHandler'
);
public function get($param = "all", $value = "") {
$this->layout = 'ajax';
if($param == "all") {
$data = $this->Base->find('all');
} elseif ($param == "id") {
$data = $this->Base->findById($value);
} else {
...
}
}
...
}
但此时我迷路了。我确实不想要一个 Base 数据库表和模型...我只是想要一些东西,这样就不必多次编写几乎相同的 get() 方法...然后让假设我制作了一个扩展此控制器的控制器“FooController”......我如何制作它以便 get() 现在与 Foo 模型/表交互?
我认为有一种 Cake 方式可以做到这一点,而不是有大量重复的代码......但我一直没能找到它。
【问题讨论】:
-
嗨@mcgowan.b,我正在documentation 中寻找组件。我没有看到一种可以使用它来处理各种模型的数据库的方法,我错过了什么吗?
-
手册上写着
Components are packages of logic that are shared between controllers,这是您希望实现的,所有控制器都可以使用的通用功能。 manual -
@mcgowan.b,是的,但我不是在谈论任何逻辑,我希望有一段代码可以处理各种模型的表操作(选择、更新、删除。 .)