Фильтр не работает в сетке
У меня есть пользовательский модуль с внутренней сеткой и формой редактирования. В форме редактирования у меня есть вкладка, которая содержит сетку для связанных продуктов.
Я реализовал сетку на вкладке, используя код из сетки продуктов для связанных продуктов.
Теперь, кажется, все работает, и флажки установлены в соответствии с данными из коллекции.
Единственная проблема связана с фильтром Да/Нет/Любой, который не работает:
установка фильтра на "да" I имейте пустую сетку, вместо этого, если я установлю фильтр на "Нет/Нет", я смогу увидеть все продукты, а также выбранный продукт.
Таким образом, похоже, что какая-то связь между фильтром и именем поля пропущена
1 answers
На странице webguys есть немецкая статья об этой проблеме: http://www.webguys.de/magento/turchen-23-pimp-my-produktgrid/
Nicht alle unsere Änderungen werden фон Магенто übernommen, zum Beispiel funktioniert die Sortierung und Filterung der neuen Атрибут нихт.
Das liegt daran, dass unsere Änderungen нах-дем-Ауфруф фон
_prepareCollection()
, в дем-дем-Спалтенинфос в коллекции übergeben werden, статтфинден.
Перевод:
Не все изменения вносятся magento, например, сортировка и фильтрация новых атрибутов не работает.
Это потому, что они сделаны после вызова _prepareCollection()
, где информация о столбцах передается в коллекцию.
protected function _callProtectedMethod($object, $methodName) {
$reflection = new ReflectionClass($object);
$method = $reflection->getMethod($methodName);
$method->setAccessible(true);
return $method->invoke($object);
}
protected function _modifyProductGrid(Mage_Adminhtml_Block_Catalog_Product_Grid $grid) {
$this->_addUpdatedAtColumn($grid);
$this->_addColorColumn($grid);
$this->_removeColumn($grid, 'set_name');
$this->_removeColumn($grid, 'visibility');
// reinitialisiert die Spaltensortierung
$grid->sortColumnsByOrder();
// reinitialisiert die Sortierung und Filter der Collection
$this->_callProtectedMethod($grid, '_prepareCollection');
}
Подробнее в посте. Я думаю, что исходный код вполне понятен, и если нет, используйте Google (если вы не понимаете немецкий;-))