3

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

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

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

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

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 如何实现公共和管理面板。以及它如何管理其逻辑..

4

1 回答 1

0

我建议你不要这样做。从您的问题来看,尚不清楚您指的是哪种“逻辑”,但从您的示例来看,它似乎并不太复杂。一般来说,业务逻辑应该在代码的模型、控制器或助手部分中编码。只要您在扩展的主 xml 文件中正确设置依赖关系,它甚至可以驻留在单独的扩展中。

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

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

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

$this->helper('extension-name')->getLogic()
于 2013-09-24T23:55:52.827 回答