Пользовательский модуль Magento.Перенаправление на другой модуль и возврат к оформлению заказа
-
05-07-2019 - |
Вопрос
Корзина покупок Magento построена на платформе Zend Framework на PHP.Это первый раз, когда я имею дело с Zend framework, и у меня возникла следующая трудность...
Я создаю пользовательский модуль, который позволит пользователям загружать изображения всякий раз, когда они покупают товары.
Я могу перегружать метод 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 / вики / темы форума сверху донизу.
Решение
эй, эта опция включена в более новую версию magento 1.3.1 для загрузки файла из внешнего интерфейса наслаждаться
Другие советы
Я подумал, что перейду к новому ответу, поскольку, как мне кажется, мне удалось заставить его работать.
Вот что я сделал
создал следующие файлы;
app/code/local/Company/SpecialCheckout/controllers/Checkout/CartController.php
app/code/local/Company/SpecialCheckout/etc/config.xml
app/etc/modules/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 admin.
Я должен признать, что у меня нет опыта работы с Magento, но я потратил некоторое время на изучение их кода.
Структура блоков определена в XML, поэтому вам может не понадобиться расширять контроллер корзины.
XML-файлы макета можно найти (при установке по умолчанию) в app / design / frontend / default / default / layout. Здесь вы найдете checkout.xml, который устанавливает структуру блока для страницы оформления заказа.
Для тех, кто застрял на этом, я написал самый простой способ решить эту проблему без перегрузки контроллеров. Мой вариант, основанный на оформлении заказа на одну страницу, загляните в magento wiki а> р>
Это был кошмар для меня, я создал учебник в своем блоге:
КОНТРОЛЛЕР / ПЕРЕЗАГРУЗКА / Фронтенд [...] # ^ / Клиент / счет / # / MyCustomer / счет / [...]
Проверьте это! Как magento объявлять и переопределять контроллеры