Fixing Magento Invalid attribute name issue after SUPEE-11219

PHP Nov 4, 2019

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:

const GRID_COLUMN_CUSTOM_GRID_ALIAS = 'blcg_custom_field_';

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

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.