0

如果新闻被删除,我需要删除与当前新闻相关的图标文件。我看到了两种方法。

第一的:

public function admin_delete ($id = null, $icon = null) {
    if ($this->request->is('get')) {
        throw new MethodNotAllowedException();
    }
    if ($this->News->delete($id)) {
        unlink(WWW_ROOT . 'img/icons/news/' . $icon);
        $this->Session->setFlash('ok!');
        $this->redirect(array('action' => 'index'));
    }
}

我需要从视图中将记录 ID 和文件名传递给此操作。对我来说,它看起来有点难看,也可能导致 Nginx 相关问题。

第二个:

public function admin_delete ($id = null) {
    if ($this->request->is('get')) {
        throw new MethodNotAllowedException();
    }
    $icon = $this->News->read('icon', $id);
    if ($this->News->delete($id)) {
        unlink(WWW_ROOT . 'img/icons/news/' . $icon['icon']);
        $this->Session->setFlash('ok!');
        $this->redirect(array('action' => 'index'));
    }
}

但我不确定这是一个好方法,我应该使用reador find('first')。我希望你能给我一些建议,告诉我如何以更正确的方式去做。提前致谢!

4

1 回答 1

0

这些东西都不应该在控制器中。find('first')使用模型获取记录beforeDelete()并将文件名保存在模型属性中。然后在afterDelete()删除你缓存的文件名中删除文件beforeDelete()

于 2012-12-26T19:33:54.033 回答