如何防止代码重复

时间:2013-09-22 17:47:16

标签: magento

我们目前正在开发一个电子商务网站。我们有一个公共和管理模块。

有时我们在两个模块中都提供相同的功能,例如查看产品或创建订单。但是在公共或管理中也存在一些功能,例如添加产品(在管理员中)。

我们的问题是常见的功能会导致逻辑重复。我们需要在两个模块中实现它。

解决问题的一种方法是使用图层。所以我们所做的就是将共同逻辑转移到模型中。但是,控制器仍然复制如下所示的代码:

public function invoice() {
    $this->Invoice->create();

    $this->Invoice->setCustomer($this->getCurrentUser);

    $invoice_items = // get list of items from post
    $this->Invoice->setItems($invoice_items);

    $this->Invoice->save();
}

我的问题是,创建一个封装了这个逻辑的Web服务是否明智,你只需要从管理员和公共模块中调用它。

Magento如何实施公共和管理面板。它是如何管理其逻辑的。

1 个答案:

答案 0 :(得分:0)

我建议你不要这样做。从你的问题来看,你所指的是什么样的“逻辑”并不完全清楚,但从你的例子来看它似乎并不复杂。通常,业务逻辑应该在代码的Model,controller或Helper部分内编码。只要在扩展的主xml文件中正确设置依赖关系,它甚至可以驻留在单独的扩展中。

您似乎可以将您的逻辑放在帮助程序类中。默认帮助程序文件位于/app/code/community/company/extension-name/Helper/Data.php下。然后,您可以使用以下代码调用后端(块,模块或控制器)中的任何位置的辅助方法:

Mage::helper('extension-name')->getLogic()

或者您可以从视图(phtml文件)中调用相同的帮助方法,如下所示:

$this->helper('extension-name')->getLogic()