我们目前正在开发一个电子商务网站。我们有一个公共和管理模块。
有时我们在两个模块中都提供相同的功能,例如查看产品或创建订单。但是在公共或管理中也存在一些功能,例如添加产品(在管理员中)。
我们的问题是常见的功能会导致逻辑重复。我们需要在两个模块中实现它。
解决问题的一种方法是使用图层。所以我们所做的就是将共同逻辑转移到模型中。但是,控制器仍然复制如下所示的代码:
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如何实施公共和管理面板。它是如何管理其逻辑的。
答案 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()