hook_search() 的 $op 参数什么时候定义为“search”?

发布于 2024-11-16 08:32:37 字数 766 浏览 0 评论 0原文

编辑

这里的基本问题是“$op 参数什么时候被定义为‘search’”?

我正在尝试在 hook_search() 的实现中创建自定义搜索。我一直在浏览 Drupal 文档以了解该方法: http://api.drupal.org/api/drupal/developer--hooks--core.php/function/hook_search/6

我知道该方法正在运行,因为我可以滑动die('killed inside of Implement of hook_search()') 进入函数顶部并查看输出。

在下面的代码中,脚本永远不会被终止,因此我可以看到 my_search() 内部捕获的输出搜索。这让我相信 switch 语句的“搜索”情况永远不会触发。有谁知道我可以从这里去哪里?

/**
* Implementation of hook_search()
*/
function my_search($op = 'search', $keys = NULL) {
  switch($op)
  {
    case 'search':
        die('search caught inside of my_search()');
        break;
  }
}

Edit

The basic question here is "when does the $op parameter get defined as 'search'"?

I am trying to create a custom search in an implementation of hook_search(). I have been looking through the Drupal documentation for the method here: http://api.drupal.org/api/drupal/developer--hooks--core.php/function/hook_search/6

I know the method is running because I can slip a die('killed inside of implementation of hook_search()') into the top of the function and see the output.

In the following code, the script is never killed so that I can see the output search caught inside of my_search(). This leads me to believe that the 'search' case of the switch statement is never firing. Does anybody know where I might go from here?

/**
* Implementation of hook_search()
*/
function my_search($op = 'search', $keys = NULL) {
  switch($op)
  {
    case 'search':
        die('search caught inside of my_search()');
        break;
  }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不交电费瞎发啥光 2024-11-23 08:32:37

首先要事。

假设您的模块名为“my”,请尝试转到 URL /search/my/whatever - 可能您会看到访问禁止页面(假设除了您在问题中粘贴的内容之外,您的代码中没有任何其他内容)。

这是因为当搜索模块使用 $op = 'name' 调用钩子时,您不会返回任何内容(请参阅 search.module 中的 _search_menu() )。您需要返回“定义使用此模块搜索的项目类型的翻译名称('内容','用户',...)” - 请参阅 http://api.drupal.org/api/drupal/developer--hooks--core.php/function/hook_search/6 并且访问禁止消失了。

完成此操作后,搜索将再次调用您的钩子(实际上,有很多调用,例如您可以在钩子中使用 drupal_set_message($op) 来查看它们),其中一个调用将使用 $op =也是“搜索”(来自 search.module 中的 search_data() )。

First things first.

Assuming your module is called 'my', try to go to URL /search/my/whatever - probably you will see access forbidden page (assuming you do not have anything more in your code besides what you have pasted in your question).

That's because you do not return anything when search module calls your hook with $op = 'name' (see _search_menu() in search.module). You need to return "a translated name defining the type of items that are searched for with this module ('content', 'users', ...)" - see http://api.drupal.org/api/drupal/developer--hooks--core.php/function/hook_search/6 And access forbidden gone.

Once this is done, search will call your hook again (actually, there are quite a few calls, you can for example drupal_set_message($op) in your hook to see them all), and one of those calls will be with $op = "search" as well (coming from search_data() in search.module).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文