Пользовательский фильтр в сетке администратора заказов на продажу, дающий php строгое уведомление об ошибке
Я смог добавить столбцы в таблицу сетки заказов на продажу в admin, но когда я пытаюсь использовать столбец для поиска, я получаю ошибку Strict Notice: call_user_func() expects parameter 1 to be a valid callback, non-static method filterSkus() should not be called statically
Вот функция наблюдателя
public function filterSkus($collection, $column)
{
if (!$value = $column->getFilter()->getValue()) {
return $this;
}
$collection->getSelect()->having(
"group_concat(`m_sales_flat_order_item`.sku SEPARATOR ', ') like ?", "%$value%");
return $this;
}
Вот помощник по обработке данных, вызывающий его
public function getSkusColumnParams()
{
return array(
'header' => 'SKUs',
'index' => 'skus',
'type' => 'text',
'filter_condition_callback' => array('DR_Salesgridder_Model_Observer', 'filterSkus'),
);
}
Ошибка стека происходит из call_user_func
в Mage/Adminhtml/Block/Widget/Grid.php
protected function _addColumnFilterToCollection($column)
{
if ($this->getCollection()) {
$field = ( $column->getFilterIndex() ) ? $column->getFilterIndex() : $column->getIndex();
if ($column->getFilterConditionCallback()) {
call_user_func($column->getFilterConditionCallback(), $this->getCollection(), $column);
}
Я сделал функцию filterSkus
статичной, но она выдает мне ошибку undefined variable: this
. Помимо удаления строгой отчетности, есть ли другой способ?
2
1 answers
Используйте экземпляр наблюдателя, заменив
array('DR_Salesgridder_Model_Observer', 'filterSkus'),
С
array(Mage::getSingleton('salesgridder/observer'), 'filterSkus'),
(возможно, вам потребуется изменить псевдоним класса "salesgridder/observer" в зависимости от вашей конфигурации
2
Author: Fabian Schmengler, 2015-07-16 13:03:09