Điểm:1

Làm cách nào để thay đổi các tuyến được xác định trong route_callbacks?

lá cờ in

Thông thường tôi thay đổi các tuyến tĩnh trong thuê bao tuyến:

  chức năng được bảo vệ alterRoutes(RouteCollection $collection) {
    $route = $collection->get('gutenberg.media.load_media');
    nếu ($tuyến đường) {
      $route->setDefault('_controller', '\Drupal\gutenberg_adv\Controller\MediaController::loadMedia');
    }
  }

Tuy nhiên, điều này không hoạt động đối với các tuyến được xác định trong routes_callback, vì vậy, điều này không hoạt động đối với tuyến tìm kiếm chẳng hạn:

$route = $collection->get('search.view_node_search');
nếu ($tuyến đường) {
  $route->setDefault('_controller',
      '\Drupal\wi_misc\Controller\SearchController::view');
}

Vậy làm thế nào để thay đổi bộ điều khiển tìm kiếm tuyến đường?

MacSim avatar
lá cờ um
Bạn đã đặt mô-đun `search` làm phần phụ thuộc của mô-đun của riêng mình chưa?
Điểm:-1
lá cờ jp

Cố gắng thay đổi trọng lượng của việc thực hiện thay đổiRoutes chức năng. Bạn có thể ghi đè lên getSubscribeSự kiện chức năng:

hàm tĩnh công khai getSubscribeEvents(): mảng
{
    trở lại [
        Sự kiện định tuyến::ALTER => [
            'onAlterRoutes', 1
        ],
    ];
}

Chú ý rằng tôi gọi onAlterRoutes thay vì thay đổiRoutes. Điều này là do trong lớp cha, đây là trình bao bọc cho hàm được gọi:

hàm tĩnh công khai getSubscribeEvents() {
    $events[RoutingEvents::ALTER] = 'onAlterRoutes';
    trả lại sự kiện $;
}

Số của bạn (= trọng số) càng cao thì nó càng được thực thi sớm hơn (hoặc ngược lại). Tôi sẽ thử với một số số cao và một số số thấp và kiểm tra kết quả.

Tôi chưa bao giờ thử nó với sự kiện cụ thể này nhưng tôi đã sử dụng phương pháp này để giải quyết các vấn đề khác với các sự kiện trong một số Tuyến đường thuê bao.

Nếu bạn sử dụng drush để xóa bộ đệm của mình (bạn nên làm điều này sau khi thay đổi mã trong tệp Tuyến đường thuê bao) thì bạn cũng có thể sử dụng var_dump($route); để đảm bảo tuyến đường của bạn tồn tại và được tải chính xác. Kết xuất sẽ được hiển thị trong cmd.

Sergey Kravchenko avatar
lá cờ in
tiếc là điều này không ảnh hưởng gì cả tuyến đường chắc chắn tồn tại, tôi đã kiểm tra nó nhưng Drupal vẫn sử dụng bộ điều khiển mặc định

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.