Корзина Magento построена на Zend Framework в PHP. Это первый раз, когда я рассматривал структуру Zend, и у меня возникли следующие трудности:Пользовательский модуль Magento. Перенаправление на другой модуль и возврат к кассе
Я создаю настраиваемый модуль, который позволит пользователям загружать изображения при покупке продуктов.
Я могу перегрузить метод 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/wikis/forum сверху вниз.
Я посмотрел на это, но мне нужно реализовать немного логики до того, как продукт действительно добавится в корзину (нужны некоторые загруженные файлы от пользователя, а также некоторые другие поля БД). Если пользователь не предоставит эти данные, я не хочу, чтобы они могли проверять. – rwired 2008-10-31 10:58:45
В таком случае, можно ли использовать систему событий? CartController запускает несколько событий - checkout_cart_before_add будет наиболее полезен, и он запускается непосредственно перед добавлением продукта в корзину - дает вам шанс выбросить ошибку? – Simon 2008-10-31 12:58:19
Я тоже думал об этом. Мне очень нравится идея, но концептуально она не очень отличается от метода перегрузки. Трудность, с которой я сталкиваюсь, - это то, что я не знаю правильных вызовов методов, чтобы мой собственный модуль отображал * что угодно вообще *. Каков «правильный» способ вызвать мой модуль, где я помещаю комментарии? – rwired 2008-11-03 04:21:45