【发布时间】:2014-06-10 10:41:50
【问题描述】:
根据 cakephp 书籍教程,通过检查 ulr 路径中是否设置了 $id 来在控制器中进行诸如数据库更新之类的操作,如果是则执行保存。在这个动作中,cakephp 需要 $this->id,使用 $this->Model->find() 从数据库中读取 wchich;
在这个过程中,$this->request->data 在控制器中被大量使用。值得一提的是,Model 无法访问 $this->request->data。
我的问题是:您是否有自己的策略来在 CRUD 操作期间创建瘦控制器和胖模型?
我有一个大用户控制器来执行 CRUD 操作,但此操作所需的模型很薄。
在我看来,像下面这样的操作是跨控制器复制的,我正在寻找在模型中编写更多代码的方法。
这是在控制器中多次复制控制器方法的示例(基本上,在所有此类操作中仅更改模型名称)
public function strona_edytuj($id = null)
{
$this->loadModel('Page');
//$this->render('strona/strona_edytuj');
if (!$id) {
$this->recursve = 0;
$data = $this->Page->find('all');
$this->set('data', $data);
$this->render('strona/strona_pokaz_wszystkie');
return false;
}
$post = $this->Page->findById($id);
if (!$post) {
throw new NotFoundException(__('Nie ma takiej strony !'));
}
if ($this->request->is(array('post', 'put'))) {
$this->Page->id = $id;
if ($this->Page->save($this->request->data)) {
$this->Session->setFlash(__('Strona została zaktualizowana.'));
$this->redirect(array('controller' => 'users', 'action' => 'strona_edytuj'));
}
$this->Session->setFlash(__('Wystąpił błąd. Spróbuj ponownie.'));
}
if (!$this->request->data) {
$this->request->data = $post;
}
}
感谢您的建议。
【问题讨论】:
标签: cakephp cakephp-2.0