Обрезка представлений сетки Magento


Я нахожу, что пользователи нашего бэкенда/бэк-офиса Magento тратят много времени на повторную отправку данных только из-за пробелов в конце при попытке фильтровать сетки Magento.

Рассмотрим следующий пример:

enter image description here

Вы увидите, что после слова "тест" есть пробел, а именно "тест". Если пользователь нажимает enter, результаты не возвращаются, потому что совпадения нет.

Я бы хотел, чтобы Magento автоматически обрезал эту отправку, чтобы она избавьтесь от предшествующих и завершающих пробелов.

Обновление: Благодаря ответу Алексея.Сварычевского:

Я применил локальное переопределение:

app/code/core/local/Mage/Adminhtml/Block/Widget/Grid.php, теперь метод выглядит следующим образом:

protected function _setFilterValues($data)
{
    foreach ($this->getColumns() as $columnId => $column) {
        if (isset($data[$columnId])
            && (!empty($data[$columnId]) || strlen($data[$columnId]) > 0)
            && $column->getFilter()
        ) {
            if (is_array($data[$columnId])){
                $new_values = array();
                foreach ($data[$columnId] as $key => $value){
                    $new_values[$key] = trim($value);
                }
                $column->getFilter()->setValue($new_values);
            }
            else{
                $column->getFilter()->setValue(trim($data[$columnId]));
            }
            $this->_addColumnFilterToCollection($column);
        }
    }
    return $this;
}

Раздел is_array() обрабатывает отправку данных, где фильтр состоит не более чем из двух значений (т.е. Дата, количество, цена и т.д.)

 2
Author: Moose, 2014-05-22

1 answers

Попробуйте переписать метод Mage_Adminhtml_Block_Widget_Grid::_setFilterValues()

    foreach ($this->getColumns() as $columnId => $column) {
        if (isset($data[$columnId])
            && (!empty($data[$columnId]) || strlen($data[$columnId]) > 0)
            && $column->getFilter()
        ) {
            $column->getFilter()->setValue($data[$columnId]);
            $this->_addColumnFilterToCollection($column);
        }
    }
    return $this;

Этот метод отвечает за настройку значений фильтра для фильтрации.

Или вы можете переписать Mage_Adminhtml_Block_Widget_Grid_Column_Filter_Abstract::getCondition()

, который отвечает за создание условий.

В одном из этих методов вы можете обрезать значения.

 1
Author: oleksii.svarychevskyi, 2014-05-22 20:55:30