Доступ к моделям Magento из Javascript - PullRequest
0 голосов
/ 30 апреля 2011

Я не уверен, возможно ли это, поэтому, если нет, я приветствую любые альтернативные способы сделать это.По сути, я хочу установить переменную сеанса Mage checkout, когда пользователь выбирает флажок.В настоящее время у меня это работает путем перенаправления на контроллер, который выполняет эту работу, а затем перенаправления обратно к извлечению после сохранения переменной.Это занимает некоторое время, и я чувствую, что должен быть лучший способ, но я не могу заставить его работать.

Вот объявление флажка ввода внутри method.phtml :

<input id="p_method_<?php echo $_code ?>" value="1" type="checkbox" name="payment[use_internal_credit]" title="<?php echo $this->htmlEscape($_method->getTitle()) ?>" class="checkbox" 
    onclick="checkout.update({'review': 1}); parent.location='<?php if(Mage::getSingleton('checkout/session')->getUseInternalCredit()): echo Mage::getUrl('customercredit/index/removeCreditUse/redirect/firecheckout'); else: echo Mage::getUrl('customercredit/index/updateCreditPost/redirect/firecheckout'); endif; ?>'" 
    <?php if(Mage::getSingleton('checkout/session')->getUseInternalCredit()): ?> checked="checked"<?php endif; ?> />

Это работает, но это не очень удобно для пользователя и занимает 3-5 секунд, чтобы вернуться на страницу оформления заказа.Есть ли лучший способ сделать это?Все, что мне нужно сделать, это переключить переменную сеанса useInternalCredit , а затем обновить раздел проверки оформления заказа.Обновление легко ... это доступ к классу Mage по клику, что является проблемой.

Ответы [ 2 ]

1 голос
/ 30 апреля 2011

Системные API-интерфейсы на стороне сервера, что означает, что клиентский код не может достичь их без каких-либо дополнительных запросов. Это хорошая вещь, так как в противном случае любой клиент мог бы изменить вещь произвольно на уровне модели.

0 голосов
/ 01 мая 2011

Вот один из способов сделать это, если это вас вдохновит.

  1. Судя по предоставленному вами коду, на шаге оплаты появляется флажок. Поэтому я бы добавил флажок в файл шаблона (template/checkout/onepage/payment.phtml).
  2. заставить наблюдателя слушать controller_action_postdispatch. метод этого наблюдателя проверит полное имя действия: 'checkout_onepage_savePaymentMethod'
  3. в случае утвердительного ответа, он будет проверять, установлен ли пост-параметр с ключом payment[use_internal_credit] (он же имя чекбокса) и имеет значение 1 (значение флажка, означающее, что флажок был проверен клиентом) и если это так, добавьте все, что вы хотите в переменную сеанса: Mage::getSingleton('core/session')->setUniqueName($data['payment[use_internal_credit]']); ($data является ссылкой на $Controller->getRequest()->getPost();)

Вы, вероятно, могли бы заставить наблюдателя прослушать событие, выброшенное специально на шаге платежа, чтобы найти его, проверить Решение Алана Шторма , я просто не знаю, что / если оно есть, и я ' Я использую это.

Дайте мне знать, если неясно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...