您必须更改搜索模块定义的路线。为此:
- 在您的
mymodule.services.yml
文件中定义以下内容:
服务:
mymodule.route_subscriber:
类: Drupal\mymodule\Routing\RouteSubscriber
标签:
- {名称:事件订阅者}
- 创建一个扩展
RouteSubscriberBase
/mymodule/src/Routing/RouteSubscriber.php 上的类的类,如下所示:
/**
* @文件
* 包含 \Drupal\mymodule\Routing\RouteSubscriber。
*/
命名空间 Drupal\mymodule\Routing;
使用 Drupal\Core\Routing\RouteSubscriberBase;
使用 Symfony\Component\Routing\RouteCollection;
/**
* 监听动态路由事件。
*/
类 RouteSubscriber 扩展 RouteSubscriberBase {
/**
* {@inheritdoc}
*/
公共功能 alterRoutes(RouteCollection $collection) {
// 替换动态创建的“search.view_node_search”路由的Controller
// 用我们自己的。
if ($route = $collection->get('search.view_node_search')) {
$route->setDefault('_controller', '\Drupal\mymodule\Controller\MyModuleSearchController::view');
}
}
}
- 最后,控制器本身位于 /mymodule/src/Controller/MyModuleSearchController.php
命名空间 Drupal\mymodule\Controller;
使用 Drupal\search\SearchPageInterface;
使用 Symfony\Component\HttpFoundation\Request;
使用 Drupal\search\Controller\SearchController;
/**
* 覆盖路由控制器进行搜索。
*/
类 MyModuleSearchController 扩展 SearchController {
/**
* {@inheritdoc}
*/
公共功能视图(请求 $request,SearchPageInterface $entity){
$build = parent::view($request, $entity);
// 取消设置结果标题。
if (isset($build['search_results_title'])) {
未设置($build['search_results_title']);
}
返回$构建;
}
}