首頁>Magento>source

我是新的magento,我想覆盖位於 /app/code/core/Mage/Directory/Helper/Data.php的"Data.php"檔案

我想从DropDownList中删除不需要的狀態。

下面是我在Data.php檔案中的函式

 受保護的函式_getRegions($ storeId)
     {
         $ countryIds = array();
         $ countryCollection = $ this->getCountryCollection() - >loadByStore($ storeId);
         foreach($ countryCollection as $ country){
             $ countryIds [] = $ country->getCountryId();
         }
         / ** @var $ regionModel Mage_Directory_Model_Region * /
         $ regionModel = $ this - >_ factory->getModel('directory / region');
         / ** @var $ collection Mage_Directory_Model_Resource_Region_Collection * /
         $ collection = $ regionModel->getResourceCollection()
             - >addCountryFilter($ countryIds)
             - >負載();
         $ regions = array(
             'config'=>array(
                 'show_all_regions'=>$ this->getShowNonRequiredState(),
                 'regions_required'=>$ this->getCountrieswithStatesRequired()
             )
         );
         foreach($ collection as $ region){
             if(!$ region->getRegionId()){
                 繼續;
             }
             // EOF自定義邏輯
             $ regions [$ region->getCountryId()] [$ region->getRegionId()] = array(
                 'code'=>$ region->getCode(),
                 'name'=>$ this - >__($ region->getName())
             );
         }
         返迴$ regions;
     }

在上面的函式中,我想添加用於从下拉列表中删除不需要的狀態的代碼.我已经為此添加了代碼,但是当我添加上述函式時,我没有任何效果。

 受保護的函式_getRegions($ storeId)
     {
         $ countryIds = array();
         $ countryCollection = $ this->getCountryCollection() - >loadByStore($ storeId);
         foreach($ countryCollection as $ country){
             $ countryIds [] = $ country->getCountryId();
         }
         / ** @var $ regionModel Mage_Directory_Model_Region * /
         $ regionModel = $ this - >_ factory->getModel('directory / region');
         / ** @var $ collection Mage_Directory_Model_Resource_Region_Collection * /
         $ collection = $ regionModel->getResourceCollection()
             - >addCountryFilter($ countryIds)
             - >負載();
         $ regions = array(
             'config'=>array(
                 'show_all_regions'=>$ this->getShowNonRequiredState(),
                 'regions_required'=>$ this->getCountrieswithStatesRequired()
             )
         );
         $ excludeRegions = array('AE','AA');
         foreach($ collection as $ region){
             if(!$ region->getRegionId()){
                 繼續;
             }
              // BOF自定義邏輯
             *** $ regionCode = $ region->getCode();
             从(陣列( '區域'=>$此>_選擇 - >-  - $這>_ regionTable),
             array('region_id'=>'region_id','country_id'=>'country_id','code'=>'code','default_name'=>'default_name')
             ) - >where('code NOT IN(?)',$ exclude_regions); ***
             // EOF自定義邏輯
             $ regions [$ region->getCountryId()] [$ region->getRegionId()] = array(
                 'code'=>$ region->getCode(),
                 'name'=>$ this - >__($ region->getName())
             );
         }
         返迴$ regions;
     }

即使是整个Data.php檔案以及上面的更改我都儲存在本地目錄中但它不起作用。

最新回復
  • 2019-12-5
    1 #

    我不鼓励你使用這種覆盖方式,比如建立 app/code/local/Mage/Directory/Helper/Data.php ,這只是意大利面條代碼的好方法..

    建立一个模組 Vids_Directory   在遊泳池 local   類似 app/code/local/Vids/Directory

    建立 app/etc/modules/Vids_Directory.xml   和這段代碼:

    <?xml version="1.0"?>
    <config>
        <modules>
            <Vids_Directory>
                <active>true</active>
                <codePool>local</codePool>
                <depends>
                    <Mage_Directory />
                </depends>
            </Vids_Directory>
        </modules>
    </config>
    

    建立 app/code/local/Vids/Directory/etc/config.xml   並添加以下代碼:

    <?xml version="1.0"?>
    <config>
        <modules>
            <Vids_Directory>
                <version>0.1.0</version>
            </Vids_Directory>
        </modules>
        <global>
            <helpers>
                <directory>
                    <rewrite>
                        <data>Vids_Directory_Helper_Data</data>
                    </rewrite>
                <directory>
            </helpers>
        </global>
    </config>
    

    最後,你可以建立 app/code/local/Vids/Helper/Data.php   並添加:

    <?php
    class Vids_Directory_Helper_Data extends Mage_Directory_Helper_Data 
    {
        protected function _getRegions($storeId) {
            // Your code inside
        }
    }
    

    Note   :你的代碼 $this->_select->from...   什麼都没有,小心(或者你可能錯過了添加完整的代碼?)。

    希望它能帮到你:)。

  • magento2:Magento 2:仅限作曲家安裝
  • model:更新自定義管理模組中的EAV屬性值