0

我想在管理侧的客户帐户信息选项卡中再显示两个下拉菜单,并首次显示所有国家和州的列表。when select country than show all list of state based on selected country.

4

1 回答 1

1
Open your "app\code\core\Mage\Adminhtml\Block\Customer\Edit\TabAccount.php" file and copy file in your local code folder 

在网站 id 后添加代码

$country = $fieldset->addField('country', 'select', array(
            'name' => 'country',
            'label' => Mage::helper('customer')->__('Country'),
            'values' => Mage::getModel('adminhtml/system_config_source_country')->toOptionArray(),
            'class' => 'required-entry',`enter code here`
            'required' => true,
            'onchange' => 'getstate(this)',
        ));

        //Edit action pass your custom table to country id and get state
        $storeId = $this->getRequest()->getParam('id');
        $editState = $stateCollection = Mage::getModel('directory/region')->load($storeId);
        $stateCollection = Mage::getModel('directory/region')->getResourceCollection()->addCountryFilter($editState->getCountry())->load();
        $state = "";
        foreach ($stateCollection as $_state) {
            $state[] = array('value' => $_state->getCode(), 'label' => $_state->getDefaultName());
        }
        $fieldset->addField('state', 'select', array(
            'label' => Mage::helper('customer')->__('State'),
            'required' => false,
            'name' => 'state',
            'selected' => 'selected',
            'values' => $state,
        ));


        /*
         * Add Ajax to the Country select box html output
         */
        $url = Mage::getBaseUrl();
        $country->setAfterElementHtml("<script type=\"text/javascript\">
    function getstate(selectElement){
        var reloadurl = '" . $url . 'admin/customer/state/' . "country/' + selectElement.value;
        new Ajax.Request(reloadurl, {
            method: 'POST',
            onComplete: function (transport) {
                jQuery('#_accountstate').html(transport.responseText);
            }
        });
    }
//</script>");

add function in "app\code\core\Mage\Adminhtml\controllers\CustomerController.php after extend it in your local code pool


public function stateAction() {
        $countrycode = $this->getRequest()->getParam('country');
        $state = "<option value=''>--Please Select--</option>";
        if ($countrycode != '') {
            $statearray = Mage::getModel('directory/region')->getResourceCollection()->addCountryFilter($countrycode)->load();
            foreach ($statearray as $_state) {
                $state .= "<option value='" . $_state->getCode() . "'>" . $_state->getDefaultName() . "</option>";
            }strong text
        }
        echo $state;

标题

   i have tested it on magento 1.7

clear your magento cache.

在这里很好

于 2016-05-24T06:37:21.557 回答