在Magento中为自定义信用卡付款方式添加自定义字段

时间:2013-12-09 17:57:30

标签: php magento

我需要在Magento中保存的信用卡付款方式中添加一个名为“parcelas”的自定义字段,它将是一个选择1到x的选项。我一直在寻找如何做到这一点,但我真的没有找到一些方法从表单中获取数据,存储到数据库并在后端获取它。有谁知道怎么做?

2 个答案:

答案 0 :(得分:0)

经过一些研究,我发现了我需要的东西。此方法适用于Magento 1.7.0.2。

1 - 创建Ccsave模块的本地副本。

2 - 添加到app / code / local / Mage / Ccsave / etc / config.xml,* config - >之间全球 - > fieldsets - > sales_convert_quote_payment *

<cc_parcelas><to_order_payment>*</to_order_payment></cc_parcelas>

以及* config - &gt;全球 - &gt; fieldsets - &gt; sales_convert_order_payment *

<cc_parcelas><to_quote_payment>*</to_quote_payment></cc_parcelas>

3 - 在app / code / local / Mage / Ccsave / Block / Payment / Info / Ccsave.php中,将此代码添加到函数* _prepareSpecificInformation *

if ($info->getCcParcelas()) {
    $transport->addData(array(
     Mage::helper('payment')->__('Número de Parcelas') => $info->getCcParcelas(),
    ));
}

4 - 在app / code / local / Mage / Ccsave / Model / Payment / Info.php中,将此代码添加到函数 getData

$this->_data['cc_parcelas'] = $this->getCcParcelas();

5 - 在ul结束前的app / design / frontend / YOURTHEME / default / template / payment / form / ccsave.phtml中添加输入字段

<li>
    <label for="<?php echo $_code ?>_cc_parcelas" class="required"><em>*</em>Número de Parcelas</label>
    <div class="input-box">
        <div class="v-fix">
            <select title="Número de Parcelas" class="input-text cvv required-entry validate-cc-cvn" id="<?php echo $_code ?>_cc_parcelas" name="payment[cc_parcelas]">
                <?php for($i=1; $i<=$this->getParcelas()->getParcelas(); $i++): ?>
                    <option value="<?php echo $i; ?>"><?php echo $i; ?></option>
                <?php endfor; ?>
            </select>
        </div>
    </div>
</li>

在步骤 5 中,我从另一个模块调用了多少'parcelas'我想要的。您可以找到自己的方法,如果您有一个静态数量的'parcelas',只需将$this->getParcelas()->getParcelas()更改为您想要的数字。

6 - 在表sales_flat_order_payment和sales_flat_quote_payment

上为数据库添加'cc_parcelas'列

现在,您可以在Ccsave模块上获取'parcelas'的数量,或者只添加另一种自定义字段。如果在此过程中出现任何问题或工作不正常,请告诉我。

答案 1 :(得分:0)

使用安装脚本

$installer = new Mage_Sales_Model_Mysql4_Setup('core_setup');
$installer->startSetup();
$installer->addAttribute(
    'order_payment',
    'cc_parcelas',
    array(
        'type' => 'varchar',
        'grid' => true
    )
);
$installer->endSetup();