2011-11-29 73 views
6

我能得到国家是这样的:Magento - 如何获得optionsarray中所有允许的国家列表?

$countryCollection = Mage::getModel('directory/country')->getResourceCollection()->loadByStore(); 

而且它们在某处对象列出,但是,我怎么toOptionsArray出来?

我以后只有每个网站的选项,而不是完整列表
即我想安哥拉,南极洲等淘汰之列。 (对不起安哥拉和企鹅)

回答

14

它实际上答案很明显:

$countryList = Mage::getModel('directory/country')->getResourceCollection() 
                ->loadByStore() 
                ->toOptionArray(true); 

还检查了http://fishpig.co.uk/magento-tutorials/list-countries-for-drop-down-in-magento有关创建下拉列表,并与这样的国家清单的详细信息。

+0

D'呃!我有'选项'而不是'选项'。感谢您如此迅速地给我一个答案,我很高兴我至少尝试了一下,发现错字! –

+0

将toOptionArray方法的参数设置为True还会将空元素作为国家/地区的第一项添加。不知何故在我的情况下,它有一个标签“1”,不知道为什么。 – Zsolti

+1

找到了“1”出现的原因。 “toOptionArray”接受一个参数,该参数可以是False,也可以是一个将作为第一个空元素标签的字符串。所以当你将True作为参数时,你会得到“(string)True”,它是“1”。 – Zsolti

0
<?php 
$_countries = Mage::getResourceModel('directory/country_collection') 
                    ->loadData() 
                    ->toOptionArray(false); 
        $allowed = Mage::getStoreConfig('general/country/allow'); 
       if (count($_countries) > 0) { ?> 
      <div class="input-box"> 
             <select name="country" id="country" class="validate-select" title="Country" > 
             <option value="">-- Please Select --</option> 
    <?php foreach($_countries as $_country){ 
              if(!in_array($_country['value'],explode(',',$allowed))){ 
               continue; 
              } ?> 
              <option value="<?php echo $_country['value']; ?>" <?php echo $formData['country'] == $_country['value'] ? ' selected="selected"' : '';?>> 
               <?php echo $_country['label'] ?> 
              </option> 
             <?php 
             } ?> 
            </select> 
           <?php } ?>