Magento购物车基于PHP的Zend Framework构建。这是我第一次处理Zend框架,我遇到了以下困难......
我正在创建一个自定义模块,允许用户在购买产品时上传图片。
每当用户尝试将产品添加到购物车时,我都可以重载addAction()方法。我还可以创建一个自定义模块,向用户显示表单并接受文件。但是我不知道如何插入代码来运行我的模块到我的重载方法:
<?php
require_once 'Mage/Checkout/controllers/CartController.php';
class Company_SpecialCheckout_Checkout_CartController extends Mage_Checkout_CartController
{
# Overloaded addAction
public function addAction()
{
# when user tries to add to cart, request images from them
# *********
# *** what do i do in here to display a custom block ???? ###
# *** and allow addAction to continue only if successfully validated form input ###
# *********
parent::addAction();
}
}
我怀疑我的困难来自于我对Zend MVC做事方式缺乏了解。我从上到下研究了所有Magento文档/ wiki / wiki /论坛帖子。
答案 0 :(得分:2)
我想我会回到新的答案,因为我认为我已经设法让它发挥作用。
这就是我做的事情
创建了以下文件;
应用程序/代码/本地/公司/ SpecialCheckout /控制器/结帐/ CartController.php
应用程序/代码/本地/公司/ SpecialCheckout的/ etc / config.xml中
应用程序的/ etc /模块/ Company_SpecialCheckout.xml
首先是控制器,就像你一样;
<?PHP
require_once 'Mage/Checkout/controllers/CartController.php';
class Company_SpecialCheckout_Checkout_CartController extends Mage_Checkout_CartController {
public function indexAction()
{
die('test');
}
}
然后是模块配置
<?xml version="1.0"?>
<config>
<modules>
<Company_SpecialCheckout>
<version>0.1.0</version>
</Company_SpecialCheckout>
</modules>
<global>
<rewrite>
<Company_SpecialCheckout_Checkout_Cart>
<from><![CDATA[#^/checkout/cart#]]></from>
<to>/SpecialCheckout/checkout_cart</to>
</Company_SpecialCheckout_Checkout_Cart>
</rewrite>
</global>
<frontend>
<routers>
<Company_SpecialCheckout>
<use>standard</use>
<args>
<module>Company_SpecialCheckout</module>
<frontName>SpecialCheckout</frontName>
</args>
</Company_SpecialCheckout>
</routers>
</frontend>
</config>
然后最终在app / etc / modules中的配置文件,以确保模块被选中。
<?xml version="1.0"?>
<config>
<modules>
<Company_SpecialCheckout>
<active>true</active>
<codePool>local</codePool>
</Company_SpecialCheckout>
</modules>
</config>
然后当你去/结账/购物车时,你应该看到'测试'。这是基于我发现here的详细信息。
确保在Magento管理员中禁用了缓存配置文件。
答案 1 :(得分:1)
嘿,这个选项在较新版本的magento 1.3.1中给出,用于从前端上传文件 享受
答案 2 :(得分:0)
我必须事先承认我没有Magento的制作经验,但我花了一些时间来探讨他们的代码。
块结构是用XML定义的,因此您可能不需要实际扩展Cart Controller。
可以在app / design / frontend / default / default / layout中找到布局XML文件(在默认安装中)。在这里,您将找到checkout.xml,它为结帐页面设置块结构。
答案 3 :(得分:0)
对于那些坚持这一点的人,我写了最简单的方法来解决这个问题而不会使控制器过载。我的变体基于单页结帐take a look in magento wiki
答案 4 :(得分:-3)
这对我来说是个噩梦,我在我的博客中创建了一个教程:
CONTROLLER / OVERRIDE /前端 [...] #^ /客户/帐号/# / mycustomer /帐号/ [...]