Fixing Magento Invalid attribute name issue after SUPEE-11219

Having recently updated a Magento installation to apply SUPEE-11219, there were issues when searching for products using the filters for the grid. I had an error message of:

Invalid attribute name: blcg_custom_field_2

The only reference to 'blcg_custom_field_' was a constant:

The only reference to 'blcg_custom_field_' was a constant:

On line 40 of app/code/community/BL/CustomGrid/Model/Grid.php

This constant is only used within the CustomGrid area above which gives the area to look for the issue, in theory. The trouble is, this only gets called as a method of itself, and isn't static, so we need to see where in the entire installation the class is used. There's 469 counts of this, according to PhpStorm. After cross-referencing the files with the stack trace which is available as part of the output, I traced the issue to the file 'app/code/core/Mage/Adminhtml/Block/Widget/Grid.php' which was updated by the Magento patch. Around line 467, changing

if (
    $column->getFilterConditionCallback() && 
    $column->getFilterConditionCallback()[0] instanceof self
    ) {
    call_user_func(
        $column->getFilterConditionCallback(),
        $this->getCollection(),
        $column
    );
} else {

to

if (
    $column->getFilterConditionCallback()
    ) {
    call_user_func(
        $column->getFilterConditionCallback(),
        $this->getCollection(),
        $column
    );
} else {

corrected the issue.

I also cleared the Magento cache and rebuilt indexes following advice from StackOverflow, but this had no impact without the change above being in place.

Tags: Development, PHP, Magento