Điểm:1

Làm cách nào tôi có thể truy xuất thông tin về URL của yêu cầu hiện tại?

lá cờ us

Tôi cần trợ giúp tìm cách lấy URL yêu cầu hiện tại trong bộ điều khiển và dựa vào đó, thay đổi tên biểu mẫu web trong bộ điều khiển.

Mã của tôi:

'#url' => Url::fromRoute('entity.webform.canonical',['webform' => 'form1'])

Trong dòng mã này, làm thế nào tôi có thể chuyển đổi giữa hình thức 1 hoặc mẫu2 dựa trên việc URL yêu cầu có chứa một đường dẫn cụ thể hay không?

Điểm:3
lá cờ cn

Tôi cần trợ giúp để tìm cách lấy URL yêu cầu hiện tại trong một bộ điều khiển

Trong bộ điều khiển, nhận yêu cầu với đối số gợi ý kiểu Yêu cầu $request:

<?php

không gian tên Drupal\mymodule\Controller;

sử dụng Drupal\Core\Controller\ControllerBase;
sử dụng Symfony\Thành phần\HttpFoundation\Request;
sử dụng Drupal\Core\Url;

lớp ExampleController mở rộng ControllerBase {

  /**
   * Bộ điều khiển để trả lại một liên kết đến một biểu mẫu web.
   */
  hành động chức năng công khai (Yêu cầu $request) {

    // tính $webform với $request->getPathInfo()

    trở lại [
      '#type' => 'liên kết',
      '#title' => 'Foo',
      '#url' => Url::fromRoute('entity.webform.canonical', ['webform' => $webform]),
      '#cache' => ['bối cảnh' => ['url.path']],
    ];
  }

}

Bạn có thể lấy thông tin khác từ yêu cầu, nhưng sau đó bạn cần điều chỉnh (các) bối cảnh bộ đệm. Xem ví dụ https://drupal.stackexchange.com/a/245597/47547

leymannx avatar
lá cờ ne
Bạn không cần phải tiêm nó?
4uk4 avatar
lá cờ cn
Không, đây là cách sử dụng cơ bản nhất của bộ điều khiển nhận yêu cầu và trả về phản hồi.
Điểm:1
lá cờ cn

Thông tin URL có sẵn từ request_stack dịch vụ. Trong mã thủ tục nhận được URL trông như thế này:

$url = \Drupal::request()->getRequestUri();

Ngoài ra còn có một trình trợ giúp để nhận các tham số truy vấn nếu bạn cần chúng, ví dụ:

if (!empty(\Drupal::request()->query->get('foo'))) {
  
}

Trong trường hợp của bạn, bạn nên tiêm request_stack dịch vụ vào bộ điều khiển của bạn, và lấy đối tượng yêu cầu từ nó getCienRequest() phương thức (thay vì lấy nó từ \Drupal::request() trực tiếp).

Đă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.