Thêm thuộc tính tùy chỉnh vào mẫu đăng ký khách hàng


8

Tôi cần phải tạo hai thuộc tính khách hàng mới. Tôi đã làm theo hướng dẫn từ: http://www.fontis.com.au/blog/magento/ledge-more-about-your-customers-adding-custom-signup-attribut

để tạo ra các thuộc tính này. Tôi đã kiểm tra bảng 'eav_attribution' trong cơ sở dữ liệu và có thể xác nhận rằng cả hai thuộc tính đều tồn tại. Điều duy nhất là tôi không biết cách tạo thuộc tính hộp kiểm nên tôi đã tạo cả hai thuộc tính là 'Có / Không'.

từ việc tuân theo mã về cách hiển thị trường trên biểu mẫu đăng ký tôi đã thực hiện:

<li class="control">
<div class="input-box">
    <label for="publisheroffer"><?php echo $this->__('Publisher Offer') ?><span class="required">*</span></label><br />
    <input type="checkbox" name="publisheroffer" id="publisheroffer" value="<?php echo $this->htmlEscape($this->getFormData()->getPublisheroffer()) ?>" title="<?php echo $this->__('Publisher Offer') ?>" class="input-text" />
</div>
</li>

Trong đó id thuộc tính là 'nhà xuất bản'. Khi tài khoản được tạo, nó sẽ tạo ra nhưng các trường thuộc tính tùy chỉnh không thay đổi.

Làm cách nào để hiển thị thuộc tính này dưới dạng hộp kiểm trên trang đăng ký và cách xử lý các giá trị.

Cảm ơn tất cả sự giúp đỡ trước.


Mô-đun trường đăng ký tùy chỉnh Magento là cách thực sự tốt để mở rộng đăng ký người dùng magento, hoạt động rất tốt với các mô-đun khác cũng như marketplace store.webkul.com/Magento-Extensions/ Lỗi
webkul

Câu trả lời:


12

Để cho phép xuất bản một thuộc tính trong biểu mẫu đăng ký và một số trang biểu mẫu khác, bạn phải đặt (các) thuộc tính đó là / có sẵn cho các biểu mẫu đó.

Để làm điều đó ở đây là một mã mẫu để đặt trong thiết lập sql của bạn dưới đây. Bạn có thể tìm thấy phần còn lại của mã tôi đã sử dụng cho mô-đun Tên người dùng Magento trên tài khoản github của mình.

/* @var $installer Diglin_Username_Model_Entity_Setup */
$installer = $this;

/* @var $eavConfig Mage_Eav_Model_Config */
$eavConfig = Mage::getSingleton('eav/config');

$store = Mage::app()->getStore(Mage_Core_Model_App::ADMIN_STORE_ID);

$attributes = $installer->getAdditionalAttributes();

foreach ($attributes as $attributeCode => $data) {
    $installer->addAttribute('customer', $attributeCode, $data);

    $attribute = $eavConfig->getAttribute('customer', $attributeCode);
    $attribute->setWebsite( (($store->getWebsite()) ? $store->getWebsite() : 0));

    if (false === ($attribute->getIsSystem() == 1 && $attribute->getIsVisible() == 0)) {
        $usedInForms = array(
            'customer_account_create',
            'customer_account_edit',
            'checkout_register',
        );
        if (!empty($data['adminhtml_only'])) {
            $usedInForms = array('adminhtml_customer');
        } else {
            $usedInForms[] = 'adminhtml_customer';
        }
        if (!empty($data['adminhtml_checkout'])) {
            $usedInForms[] = 'adminhtml_checkout';
        }

        $attribute->setData('used_in_forms', $usedInForms);
    }
    $attribute->save();
}

Xin chào, các thuộc tính được phép trên các biểu mẫu đăng ký. Tôi đã thực hiện quy trình tương tự cho các loại đầu vào 'văn bản' và chúng cập nhật tốt khi gửi đăng ký. Vấn đề tôi gặp phải là tôi cần sử dụng loại đầu vào 'có / không' là hộp kiểm trên mẫu đăng ký.
dùng1669256

Tại sao không đặt vào thẻ html inputthuộc tính checkedkhi giá trị của $this->getFormData()->getPublisheroffer() == 1. Bạn sẽ có <input ... value="1" <?php echo ($this->getFormData()->getPublisheroffer() == 1): 'checked' : ''; ?>Bạn nên xóa value="<?php echo $this->htmlEscape(...)"và thiết lập value="1"(hoặc cách khác)
Sylvain Rayé

0

Bạn có thể thử đoạn mã sau để tạo thuộc tính tùy chỉnh hộp kiểm.

$customerSetup->addAttribute(Customer::ENTITY, 'customer_approved', [
            'type' => 'int',
            'label' => 'Customer Approved',
            'input' => 'boolean',
            'required' => false,
            'visible' => true,
            'user_defined' => true,
            'sort_order' => 1001,
            'position' => 1001,
            'system' => 0,
        ]);

        $attribute = $customerSetup->getEavConfig()->getAttribute(Customer::ENTITY, 'customer_approved')
        ->addData([
            'attribute_set_id' => $attributeSetId,
            'attribute_group_id' => $attributeGroupId,
            'used_in_forms' => ['adminhtml_customer'],
        ]);

        $attribute->save();

Sử dụng đầu vào 'boolean' thay vì 'hộp kiểm'.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.