
Проблема пов’язана зі спеціальним веб-сайтом із спеціальним полем для телефону. У ньому є місця. Одним із рішень є видалення пробілів під час попереднього збереження та обробка старих записів у БД, видаляючи пробіли.
Але іноді краще не чіпати те, що працює.
Завдання полягало в тому, щоб забезпечити пошук за телефонним фільтром у переглядах. У представленнях немає стандартних методів для пошуку з видаленими пробілами. У цьому випадку я знайшов рішення змінити запит.
Так, наприклад, значення поля телефону – «+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'] ); } } } } }