рУССКИЙ
ИДИ НАХУЙ
Данная проблема относится к одному из сайтов с которым я работал, где использовалось кастомное поле для сохранения телефона. И в нем были пробелы. Одно из решений было удаление пробелов во время сохранения или пройтись во всем записям в БД и удалить.
Но иногда лучше не трогать то что работает.
Было дано задание добавить в текущую вьюху поиск по полю Телефон. Я не нашел готового решения для вьюх и написал кастом с помощью хука hook_views_query_alter().
Для примера, поле телефона имеет значение "+354 566 32 56" и нужно отфильтровать данный номер по строке "6632".
Следующий код вам в этом поможет:
/** * Implements hook_views_query_alter(). * * @param ViewExecutable $view * @param Sql $query */ function custommodule_views_query_alter(ViewExecutable $view, Sql $query) { if ($view->id() == 'commerce_orders' && $view->current_display == 'orders') { // Traverse through the 'where' part of the query. foreach ($query->where as &$condition_group) { foreach ($condition_group['conditions'] as &$condition) { // Replace whitespaces from phone field. if ($condition['operator'] == 'formula' && !empty(strpos($condition['field'], 'field_phone_number'))) { $condition['field'] = preg_replace(['/CONCAT_WS/','/[)]/'], ['REPLACE(CONCAT_WS', "), ' ', '')"], $condition['field'] ); } } } } }
рУССКИЙ
ИДИ НАХУЙ
Добавить комментарий