3

我是 MVC 的新手(使用 codeIgniter 作为我的例子),我已经阅读了 MVC 胖模型和瘦控制器 3 次,我得到了什么:

  • 模型在控制器调用模型并传递要由视图呈现的数据时进行艰苦的工作

但我有一个困惑,例如我有一个管理页面会删除数据库中的产品数据,我会有这个代码(使用 codeIgniter):

public function deleteProduct($id = '')
    {
        if( is_digit($id))
        {
            $this->load->model('productModel');
            $this->productModel->deleteById($id);

            //oops product has images in another DB table and in server, so i need to delete it
            $success = $this->_deleteProductImages($id);
        }
        else
        {
            //redirect because of invalid param
        }

            //if success TRUE then load the view and display success
            //else load the view and display error
    }


protected function _deleteProductImages($productId)
{
        $this->load->model('productModel');

        //return array of images path
        $imgs = $this->productModel->getImagesPath($productId);

        // after i got the imgs data, then delete the image in DB that references to the $productId
        $this->productModel->deleteImage($productId);
        foreach($imgs as $imgPath)
        {
            if(file_exists $imgPath) unlink($imgPath);
        }
}

我的问题是:

在瘦控制器和胖模型的概念中,我应该将方法移动_deleteProductImages($id)到我的 productModel 还是应该这样保留它?如果您有其他更好的方法,请在此处指导我

4

1 回答 1

1

我的模型中有一个删除产品的方法。此方法将完成删除产品所需的所有工作(包括删除关联的数据库记录、文件等)。

如果操作成功,该方法将返回 TRUE。

如果无法删除关联的记录或文件,我会在其操作中记录该错误,可能会在 UI 中引发错误消息并继续。

该方法可能会调用其他模型中的其他方法……例如,我可能有一个 product_attributes 模型来存储所有产品的属性。该模型可能有一个方法:delete_by_product_id()。在这种情况下,我的产品模型将调用 product_attributes->delete_by_product_id(),它会处理关联记录的删除。

于 2013-03-22T14:21:07.647 回答