Drupal - поиск, показывающий ошибку preg_match - PullRequest
0 голосов
/ 14 июля 2011

У меня есть пользовательский поиск на одном из веб-сайтов, которые я создаю в Друпале.Поиск работает отлично, когда "Перестройка реестра тем на каждой странице".флажок установлен на странице настройки темы.Однако, когда я снимаю флажок (для производства), поиск больше не работает, та же страница просто перезагружается при нажатии кнопки поиска.Просматривая последние записи в журнале, я обнаружил ошибку: preg_match () ожидает, что параметр 2 будет строкой, массив указан в /var/www/devel_sites/SITENAME/docroot/modules/search/search.module в строке 671.

У кого-нибудь есть идеи, почему мой поиск будет зависеть от реестра тем и как это исправить?У меня есть пользовательский модуль для поиска, и часть функциональности находится в template.php.

Любые советы приветствуются, спасибо.

Ответы [ 2 ]

0 голосов
/ 23 июля 2011

Я (наконец-то) смог решить проблему, и я публикую нижеприведенное разрешение на случай, если кто-то еще столкнется с тем же.

Я начал с перемещения всей функциональной логики из template.php в свой пользовательский модуль.(Я должен был сделать это в любом случае, и казалось, что это может быть проблемой), но это не решило это.Мне пришлось копаться в коде моего пользовательского модуля, и именно там я обнаружил, в чем проблема.Я использовал следующее, чтобы получить введенные ключевые слова:

$form_state['values']['processed_keys']

Оказывается, когда опция реестра Rebuild Theme отключена, указанное выше значение массива перезаписывается реестром темы изаменяется пустым массивом, что приводит к ошибке в строке 671 модуля поиска, которая ожидает строку в качестве второго аргумента, а не массив.Замена вышеупомянутого решена ниже для меня:

$form['basic']['inline']['processed_keys']['#post']['keys']

0 голосов
/ 14 июля 2011

Без публикации кода (так как код является пользовательским), я не думаю, что кто-то может ответить на ваш вопрос удовлетворительно.Однако, если вы не возражаете против изменения кода модуля, просто сделайте условное условие is_array перед строкой 671 и, если оно есть, implode условия (или проверьте его и избавьтесь от любого мусора.) Передайте эту строку в строку671.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...