2

I have been getting this error in my log for a while, the code is just below. Can anyone explain to me what happens at (line 27 ) $allowed_method_codes ? Specifically in get getActiveMethods(Mage::app()->getStore($store_code)->getId()). Whats it looking for in getStore? Why is there a variable in there? Thanks for any help.

ERR (3): Notice: Undefined variable: store_code in Paymenttype/Model/Observer.php on line 27

    $geoip_currency = $geoipHelper->getCookie('currency_code');
    if( $geoip_currency =='USD') {
        $store_code = 'default';
    }
    if( $geoip_currency =='CAD') {
        $store_code = 'canada';
    }

$allowed_method_codes = array_keys(Mage::getModel('payment/config')->getActiveMethods(Mage::app()->getStore($store_code)->getId()));

Loooks like it works perfectly.

user52295
  • 23
  • 3
James
  • 21
  • 1

2 Answers2

1

Use code below (CAD currency for "canada" store, else "default" store):

$geoip_currency = $geoipHelper->getCookie('currency_code');    
$store_code = 'default';

if( $geoip_currency =='CAD') {
    $store_code = 'canada';
}

$allowed_method_codes = array_keys(Mage::getModel('payment/config')->getActiveMethods(Mage::app()->getStore($store_code, 'code')->getId()));
sergei.sss
  • 1,179
  • 8
  • 19
1

Well as sergei.sss points out, what happens if $geoip_currency is NULL or not CAD or USD? Always initialize the variable...

I would use a switch or an elseif block, just in case you want to add more stores later.

$geoip_currency = $geoipHelper->getCookie('currency_code');    
$store_code = 'default';

if( $geoip_currency =='USD') {
    $store_code = 'default';
}elseif($geoip_currency =='CAD'){
    $store_code = 'canada';
}

$allowed_method_codes = array_keys(Mage::getModel('payment/config')->getActiveMethods(Mage::app()->getStore($store_code, 'code')->getId()));

or

$geoip_currency = $geoipHelper->getCookie('currency_code');    

if( $geoip_currency =='USD') {
    $store_code = 'default';
}elseif($geoip_currency =='CAD'){
    $store_code = 'canada';
}else{
     $store_code = 'default';
}

$allowed_method_codes = array_keys(Mage::getModel('payment/config')->getActiveMethods(Mage::app()->getStore($store_code, 'code')->getId()));

or

$geoip_currency = $geoipHelper->getCookie('currency_code');    
switch ($geoip_currency){
    case'CAD':
         $store_code = 'canada';
         break;
    case 'USD':
    default:
         $store_code = 'default';
}

$allowed_method_codes = array_keys(Mage::getModel('payment/config')->getActiveMethods(Mage::app()->getStore($store_code, 'code')->getId()));
Yiorgos Moschovitis
  • 1,301
  • 7
  • 11