1

Hwg Attribute manager extension (Manage Category、Customer、Customer Address Attributes) を使用して、カスタム属性を顧客住所に追加しました (住所タイプを商用または住宅から選択します)。バックエンドで動作しています。しかし、問題はフロントエンドでは機能していません。だから私はこのコードを
app/design/frontend/base/default/template/customer/address/edit.phtml に追加しました

<li class="fields">         
                <label for="billing:addresstype" class="required"><em>*</em><?php echo $this->__('Address Type') ?></label>
                <div class="input-box"> 
                    <select name="billingaddresstype" id="billingaddresstype">
                        <?php $collection = Mage::getResourceModel('eav/entity_attribute_option_collection');                           
                            $collection->setAttributeFilter(174);
                            $collection->setStoreFilter();
                            $collection->load();
                            $options = $collection->toOptionArray();
                            foreach ($options as $option) {
                                echo "<option value='".$option['value']."'>".$option['label']."</option>";             
                             }
                        ?>
                    </select><?php  //var_dump($options); ?>
                </div>
            </li>

コンボボックスがフロントエンドに表示されるようになりました。しかし、それはデータを保存しません。次に、AddressController で送信フォームの値を確認します

 $addressForm = Mage::getModel('customer/form');
        $addressForm->setFormCode('customer_address_edit')
            ->setEntity($address);
        $addressData    = $addressForm->extractData($this->getRequest());

        var_dump($addressData);

        break;

カスタム属性値が含まれていません。

array(11) { ["firstname"]=> string(8) "thushara" 
        ["lastname"]=> string(11) "Mannaperuma"
        ["company"]=> string(3) "flt"
        ["street"]=> array(2) 
            { [0]=> string(17) "1234 Heartwood Dr"   [1]=> string(0) "" } 
            ["city"]=> string(10) "Beltsville" 
            ["country_id"]=> string(2) "US" 
            ["region"]=> string(0) "" 
            ["region_id"]=> string(2) "31" 
            ["postcode"]=> string(5) "20705" 
            ["telephone"]=> string(12) "548-789-6548" 
            ["fax"]=> string(0) "" } 

私はこの時点で立ち往生しています。

4

2 に答える 2

1

コードを試しましたが、編集ページが壊れました。

拡張機能は 1.9 で機能します。カスタマイズされた rwd テーマを使用しています。
これが私にとってどのように機能するかです。

このファイルをテーマ フォルダーで開きました: \magento\app\design\frontend\rwd\default\template\customer\address\edit.phtml

あなたの場合、コードは次のようになります。

<li class="field">
     <label for="adtype" class="required">
        <em>*</em>Adtype
     </label>
     <div class="input-box">
         <input type="text" name="adtype" id="adtype" value="<?php echo $this->escapeHtml($this->getAddress()->getAdtype()) ?>" />
    </div>
</li>
于 2014-08-08T15:13:03.047 に答える
-1

私はそれを解決しました。

Hwg Attribute manager 拡張機能の最新バージョンがあることを確認してください。

このリンクdirect-download-magento-extensionを使用して、拡張機能を zip ファイルとして取得できます。

これは、カスタム属性をフロントエンドに取得するために使用したコードです。データを正しく保存しています。

<li class="fields">
                <?php 
                    $attribute = Mage::getModel('eav/config')->getAttribute('customer_address','adtype');
                ?>
                <label for="adtype" class="<?php if($attribute->getIsRequired() == true){?>required<?php } ?>"><?php if($attribute->getIsRequired() == true){?><em>*</em><?php } ?><?php echo $this->__('Address Type') ?></label>
                <div class="input-box">
                    <select name="adtype" id="adtype" class="<?php if($attribute->getIsRequired() == true){?>required-entry<?php } ?>">
                        <?php
                             $options = $attribute->getSource()->getAllOptions();                                
                             foreach($options as $option){
                        ?>
                            <option value='<?php echo $option['value']?>' <?php if($this->getCustomer()->getAdtype() == $option['value']){ echo 'selected="selected"';}?>><?php echo $this->__($option['label'])?></option>
                        <?php } ?>
                    </select>
                </div>
            </li> 

adtype は私の属性コードです。フィールド名と ID は属性コードでなければなりません。

于 2012-12-19T06:42:35.067 に答える