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 /论坛帖子。

有帮助吗?

解决方案

嘿,这个选项在较新版本的magento 1.3.1中给出,用于从前端上传文件 享受

其他提示

我想我会回到新的答案,因为我认为我已经设法让它发挥作用。

这就是我做的事情

创建了以下文件;

应用程序/代码/本地/公司/ 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>

然后当你去/结账/购物车时,你应该看到'测试'。这是基于我在此处找到的详细信息。

确保在Magento管理员中禁用了缓存配置文件。

我必须事先承认我没有Magento的制作经验,但我花了一些时间来探讨他们的代码。

块结构是用XML定义的,因此您可能不需要实际扩展Cart Controller。

可以在app / design / frontend / default / default / layout中找到布局XML文件(在默认安装中)。在这里,您将找到checkout.xml,它为结帐页面设置块结构。

对于那些坚持这一点的人,我写了解决这个问题的最简单的方法,而没有超载控制器。我的变体基于单页结帐查看magento wiki

这对我来说是个噩梦,我在我的博客中创建了一个教程:

CONTROLLER / OVERRIDE /前端 [...]                                       #^ /客户/帐号/#                 / mycustomer /帐号/                            [...]

检查一下! 如何magento声明和覆盖控制器

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top