Drupal - 搜索显示preg_match错误

时间:2011-07-14 19:17:48

标签: php drupal

我在Drupal建立的网站之一进行了自定义搜索。当“在每个页面上重建主题注册表”时,搜索工作完全正常。复选框在“主题配置”页面上选中。但是,当我取消选中它(用于生产)时,搜索不再有效,同一页面只需在点击搜索按钮时再次重新加载。查看最近的日志条目后,我发现错误: preg_match()期望参数2是字符串,数组在第671行的/var/www/devel_sites/SITENAME/docroot/modules/search/search.module中给出。

任何人都有任何想法为什么我的搜索将取决于主题注册表以及如何解决这个问题?我有一个用于搜索的自定义模块,部分功能在template.php。

感谢任何提示,谢谢。

2 个答案:

答案 0 :(得分:0)

没有发布代码(因为代码是自定义的),我认为任何人都无法满意地回答您的问题。但是,如果您不介意修改模块代码,只需在第671行之前执行is_array条件,如果是,implode条件(或检查它并消除任何垃圾。)通过字符串到第671行。

答案 1 :(得分:0)

我(最终)能够解决问题,我发布下面的解决方案以防其他人面临同样的问题。

我开始将所有功能逻辑从template.php移动到我的自定义模块(我应该已经完成​​它,看起来它可能是一个问题)但它没有解决它。我不得不深入挖掘我的自定义模块代码,这就是我发现问题所在的地方。我使用以下内容获取输入的关键字:

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

事实证明,当Rebuild Theme注册表选项关闭时,上面的数组值被主题注册表覆盖并被替换为空数组,因此导致搜索模块的第671行出错,一个字符串作为第二个参数,而不是一个数组。用以下代替上面解决了它:

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