2013-06-04 96 views
1

我嘗試在magento中註冊全局變量,但它不起作用。 在/app/code/core/Mage/Checkout/controllers/CartController.php我寄存器變量:Magento。寄存器變量不起作用

Mage::register('g_addressType', $addressType); 

$mylog = print_r(Mage::registry('g_addressType'), true); 
Mage::log("address_type1:".$mylog, null, 'mygento.log'); 

$this->_redirect('checkout/onepage/'); 

在/app/code/core/Mage/Checkout/Block/Onepage.php我試圖讓這個變量:

$mylog = print_r(Mage::registry('g_addressType'), true); 
Mage::log("address_type2:".$mylog, null, 'mygento.log'); 
return Mage::registry('g_addressType'); 

但它沒有工作。我得到這個日誌:

2013-06-04T13:38:45+00:00 DEBUG (7): address_type1:private 
2013-06-04T13:38:51+00:00 DEBUG (7): address_type2: 

這個錯誤在哪裏?我使用magento 1.7。是的,我知道我無法對核心文件進行更改。謝謝。

回答

2

這不起作用,因爲Magento註冊表在頁面加載時不持久。並且從CartController(/ checkout/cart /)更改爲OnepageController(/ checkout/onepage /)意味着重新加載頁面,以便您的g_addressType不會保留在兩者之間。

更好的事情是使用會話這樣的:

在CartController.php

Mage::getSingleton('checkout/session')->setGAddressType($addressType)然後

在OnepageController.php Mage::getSingleton('checkout/session')->getGAddressType()

最後提醒,但:請切記不要在Core Magento文件中編碼。請擴展現有的核心類。