5

在 mysql4-install-0.1.0.php 中,我可以在我的 magento 模块中添加自定义文本字段,如下所示:

$entityTypeId     = $setup->getEntityTypeId('customer');
$attributeSetId   = $setup->getDefaultAttributeSetId($entityTypeId);
$attributeGroupId = $setup->getDefaultAttributeGroupId($entityTypeId, $attributeSetId);

$setup->addAttribute('customer', 'resale', array(
    'input'         => 'text',
    'type'          => 'varchar',
    'label'         => 'Resale number',
    'visible'       => 1,
    'required'      => 1,
    'user_defined' => 1,
));

$setup->addAttributeToGroup(
 $entityTypeId,
 $attributeSetId,
 $attributeGroupId,
 'resale',
 '999'  //sort_order
);

$oAttribute = Mage::getSingleton('eav/config')->getAttribute('customer', 'resale');
$oAttribute->setData('used_in_forms', array('adminhtml_customer','customer_account_create'));
$oAttribute->save();

我还想添加一个复选框字段。我这样添加:

$setup->addAttribute('customer', 'marketattended1', array(
    'input'         => 'checkbox',
    'type'          => 'int',
    'label'         => 'San Francisco International Gift Fair',
    'visible'       => 1,
    'required'      => 0,
    'user_defined' => 1,
));

$setup->addAttributeToGroup(
 $entityTypeId,
 $attributeSetId,
 $attributeGroupId,
 'marketattended1',
 '999'  //sort_order
);

$oAttribute = Mage::getSingleton('eav/config')->getAttribute('customer', 'marketattended1');
$oAttribute->setData('used_in_forms', array('adminhtml_customer','customer_account_create'));
$oAttribute->save();

我可以在管理员/客户中看到我的复选框字段,但是当我尝试编辑或添加新客户时,它不会保存客户。它只是永远显示“请稍候”指示器。如何使这项工作?

*编辑

在非对象上调用成员函数 setAttribute()

我发现了这个错误或服务器响应。

*编辑

我更改了安装程序代码:

$setup->addAttribute('customer', 'marketattended1', array(
    'input'         => 'boolean',
    'type'          => 'int',
    'label'         => 'San Francisco International Gift Fair',
    'visible'       => 1,
    'required'      => 0,
    'user_defined' => 1,
    //'source'        => 'eav/entity_attribute_source_boolean'
));

$setup->addAttributeToGroup(
 $entityTypeId,
 $attributeSetId,
 $attributeGroupId,
 'marketattended1',
 '999'  //sort_order
);

$oAttribute = Mage::getSingleton('eav/config')->getAttribute('customer', 'marketattended1');
$oAttribute->setData('used_in_forms', array('adminhtml_customer','customer_account_create'));
$oAttribute->save();

现在我可以看到带有 yes|no 选项的选择组件,并且它工作得很好。它还显示在客户注册表上,如下所示:

<div class="field">
   <label for="marketattended1">San Francisco International Gift Fair</label>
   <select id="marketattended1" name="marketattended1" class=" select">
      <option value="0">No</option>
      <option value="1">Yes</option>
   </select></div>

我希望它是复选框。我试过这样:

   <div class="field">
      <input class="checkbox" id="marketattended1" onchange="[removed]changechecked()" type="checkbox" value="1" />
      <label  class="required">*Others</label >
   </div>

但它不会保存。如何让它保存?

4

2 回答 2

5

您必须添加复选框的名称:

<input class="checkbox" id="marketattended1" name="marketattended1" onchange="[removed]changechecked()" type="checkbox" value="1" />

然后它工作

于 2012-09-03T18:08:55.273 回答
2

我使它与javascript一起工作。我隐藏选择元素并使用 jQuery 添加复选框。当用户单击复选框时,我更改了选择的值。

(function($){
    $(document).ready(function(){
        var selects = $('.checkselect');
        $.each(selects, function(index, select){
            var checkbox = "<input class='selectcheckbox' type='checkbox' value='0' />";
            $(select).append($(checkbox));
            $(select).find('select').hide();
            $(select).on('click', '.selectcheckbox', function(){
                if($(this).is(':checked'))
                    $(select).find('select').val('1');
                else 
                    $(select).find('select').val('0');
            });
        });
    });
})(jQuery);

不是最好的解决方案,但我只需要在项目中前进。如果有人找到更好的解决方案,请在这里回答。

于 2012-07-27T05:08:20.747 回答