Posts Tagged ‘magento’

If You’re Not Testing Something Then Don’t Make It Default

Thursday, January 29th, 2009

After debugging an Ajax Internet Explorer issue for about 3 hours today at work wherein what should’ve been some simple JSON data being returned by a jQuery $.post call the server instead returned the website’s main splash page.

I eventually discovered the problem was also clearing the user’s checkout basket. Upon realising that I discovered the user’s session was dematerialising on the server-side as well.

A few google’s later I found this post on the Magento forum (finally their forum is useful):

http://www.magentocommerce.com/boards/viewthread/27475/

So basically there are options in Magento’s admin backend that cause disruptions in IE for sessions and result in user’s losing their entire session.

In my case it was disrupting Ajax calls all the time. Why have the Magento developers made a buggy set of options the default for the admin panel when the bug affects the most common browser in existence?

Those options do sound great in terms of security but until they’re stable and tested they shouldn’t be made the default.

Magento: Listing regions from a country code

Thursday, January 15th, 2009

Once and a while you may want to get a collection of the regions that are associated with a country in Magento. For example, the United States is of course a collection of… states. In Magento these are referred to as regions (Japan’s prefectures would hence be referred to as regions as well.)

So for a given country (and that country’s ID or country code) you might want to find all the regions in that country. Which are usually used to populate a dropdown menu on the address selection pages or shipping tax pages.


$collection = Mage::getModel('directory/region')->getResourceCollection()
->addCountryFilter($this->getCountryId())
->load();

It’s great when ORM works for a developer. The problem with Magento I find is the complete lack of documentation. I only discovered the above technique after 20 minutes of grepping the app/code/core directory… :|

And remember to use Magento’s log method:


foreach($collection as $region) {

Mage::log(print_r($region, true));

}

Note some of the more useful attributes of that $region object are:

  • $region->default_name
  • $region->code

Which give responses along the lines of South Australia and SA, respectively.