Пользовательский модуль Magento. Перенаправить на другой модуль и вернуться к оформлению заказа - PullRequest
0 голосов
/ 31 октября 2008

Корзина Magento построена на Zend Framework в PHP. Я впервые имею дело с фреймворком 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 сверху вниз.

Ответы [ 5 ]

2 голосов
/ 03 ноября 2008

Я думал, что перейду к новому ответу, так как думаю, что мне удалось заставить его работать.

Вот что я сделал

создал следующие файлы;

Приложение / код / ​​местные / Компания / SpecialCheckout / Контроллеры / Checkout / CartController.php

Приложение / код / ​​местные / Компания / SpecialCheckout / и т.д. / config.xml

приложение / и т.д. / модули / 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.

1 голос
/ 19 мая 2009

эй, эта опция указана в новой версии magento 1.3.1 для загрузки файла из внешнего интерфейса. наслаждаться

0 голосов
/ 27 октября 2010

Для тех, кто застрял на этом, я написал самый простой способ решения этой проблемы без перегрузки контроллеров. Мой вариант основан на одностраничном оформлении заказа , загляните в magento wiki

0 голосов
/ 23 июня 2010

Это был кошмар для меня, я создал учебник в своем блоге:

КОНТРОЛЛЕР / ПЕРЕЗАГРУЗКА / Фронтенд [...] # ^ / Клиент / счет / # / MyCustomer / счет / [...]

Проверьте это! Как magento объявлять и переопределять контроллеры

0 голосов
/ 31 октября 2008

Должен сразу признать, что у меня нет опыта производства Magento, но я потратил некоторое время на изучение их кода.

Структура блока определена в XML, поэтому вам может не понадобиться расширять контроллер корзины.

Файлы макета XML можно найти (при установке по умолчанию) в app / design / frontend / default / default / layout. Здесь вы найдете checkout.xml, который устанавливает структуру блока для страницы оформления заказа.

...