当我有一个控制器时,例如我经常有一个action_view()
处理大部分代码的文章。
有时,它可以变成 80-100 行长。
我的控制器通常处理所有这些:
- 绑定模板变量
- 设置会话(在适当的情况下)
- 发送电子邮件
- 验证表格
我可以看到我可以在控制器中创建另一个私有方法的点点滴滴,不一定是为了重用,而是为了分离关注点。
但是,(对我来说)具有可以通过路由调用的方法和仅限内部的方法看起来很奇怪。
还有一些事情对我说“我应该在模型中,而不是控制器中”。但是,我也不确定这是否正确。
最后,我有一个看起来很程序化的有点胖的控制器方法。
我真的应该在我的action_*
方法顶部列出一个列表,然后将其余代码分成更小的模块吗?
我在下面有一个例子......这是典型的控制器东西,还是会话等应该在模型中?
public function action_pdf($type, $id) {
// Get PDF file from db and send headers to it
$id = (int) $id;
$pdfFile = $this->model->getPdf($id, $type);
if ($pdfFile) {
$this->request->redirect($pdfFile);
} else {
$this->session->set('pdfMissing', true);
$this->request->redirect(Route::get('properties')->uri());
}
}
所以,我的问题是,我做错了吗?