JavaScript — trim () в Symfony с APY DataGridBundle

У меня возникли трудности с удалением пробелов с конца ввода в форме, использующей пакет APY Data Grid. Я подозреваю, что это может быть невозможно без взлома исходного кода, но я хотел бы получить второе мнение и, возможно, некоторые идеи для обходного пути. Проще говоря, поиск не дает результатов, если в поиск добавляется дополнительный пустой символ, поэтому мне нужно его обрезать, прежде чем он попадет в запрос.

Обычно обрезка прекрасно работает в ветке, например:

{{ 'foo'|trim  }}

Однако это, которое использует вышеупомянутую сетку данных, не

{{ filterColumn(grid, 'foo'|trim) }

Я пытался обработать его в объекте (способ, которым APY работает, заключается в том, что он переносит элемент непосредственно из объекта в ветку), но это не сработало. Прокручивая файлы поставщика, чтобы найти, как код принимает строку фильтра и преобразовывает ее в запрос, и, кажется, нет места для редактирования строки где-либо по пути.

Я ищу альтернативные решения, такие как использование javascript для обрезки переменной до того, как она будет опубликована (это не большая проблема, связанная с необходимостью использования javascript; это для внутреннего приложения, и все пользователи здесь установили его). Однако это тоже сложно. Я пытался что-то вроде этого: [обновление для лучшего кода]

var oldValue = document.forms[0].querySelector('input[id$="foo__query__from"]').value;
var newValue = oldValue.trim();
document.forms[0].querySelector('input[id$="foo__query__from"]').value = newValue;

Тем не менее, похоже, что проблема все та же. Проблема в том, что с этим можно справиться только путем изменения файлов вендоров, что а) я не хочу делать, и б) не будет работать в любом случае, так как они не развертываются таким же образом.

Обратите внимание, что трудно вызвать в фактической форме до обработки; APY не использует типичные файлы форм (например, formbuilder). Все, что мне доступно, это {{ filterColumn(grid, 'foo') }

Решения / предложения будут оценены.

0

Решение

Через некоторое время я снова вернулся к этому и нашел решение для javascript. Это помогло решить проблему и работало глобально для всех форм приложения.

   $('form').submit(function(){
$(this).find('input').each(function(){
$(this).val($.trim($(this).val()));
});
});
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector