0

ニュースが削除された場合、現在のニュースに関連するアイコン ファイルを削除する必要があります。2つのアプローチがあります。

初め:

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 に答える