Điểm:1

Làm cách nào để buộc máy nhắn tin cập nhật?

lá cờ pl

Tôi có một biểu mẫu tùy chỉnh được tạo bằng API biểu mẫu. Dòng chảy chung là:

  1. Xây dựng và hiển thị biểu mẫu
  2. Nhận đầu vào của người dùng
  3. Xây dựng lại và hình thức
    • truy vấn dựa trên đầu vào của người dùng có thêm

      $truy vấn = $truy vấn
        ->extend('Drupal\Core\Database\Query\PagerSelectExtender')
        ->giới hạn($values['items']);
      

Tất cả điều này hoạt động tốt cho lần gửi đầu tiên và để phân trang giữa các lần gửi, nhưng khi người dùng nhập một giá trị khác cho truy vấn, trong khi kết quả tìm kiếm thay đổi, máy nhắn tin sẽ không cập nhật (nó hiển thị cùng một số trang kết quả như cũ truy vấn và ở trên cùng một trang của truy vấn.

Vì vậy, nếu truy vấn đầu tiên (ví dụ: "vịt") dẫn đến 14 trang kết quả và tôi đang ở trang thứ 3 của kết quả về vịt, khi tôi thay đổi trường truy vấn thành "gà" và gửi, kết quả thực tế sẽ hiển thị đúng nội dung, nhưng máy nhắn tin vẫn hiển thị 14 trang thay vì 35 cho gà và nó giữ tôi ở trang thứ 3 thay vì đưa tôi đến trang đầu tiên).

Làm cách nào để buộc máy nhắn tin cập nhật?

Điểm:2
lá cờ pl

Tôi đã tìm ra nó, hy vọng điều này sẽ giúp người khác có câu hỏi tương tự.

Thay vì làm một $formstate->setRebuild(); bên trong gửi biểu mẫu phương pháp, tôi đã đổi nó thành

$form_state->setRedirect(
    'sliker_drupal_backend.browser',
    [],
    [
      'truy vấn'=>[
        'logic'=>$form_state->getValue('logic'),
        'items'=>$form_state->getValue('items'),
        'cụm từ'=>$form_state->getValue('cụm từ'),
        'khả năng hiển thị'=>$form_state->getValue('khả năng hiển thị'),
        'ids'=>$form_state->getValue('ids'),
      ],
    ]);

các setRedirect() phương thức có ba đối số:

  • Tên máy định tuyến
  • Đối số (để điền vào "chỗ giữ chỗ" trong đường dẫn tuyến đường)
  • Tùy chọn là bất kỳ tùy chọn nào có thể được chuyển đến một \Drupal\Core\Url

Bằng cách tìm kiếm mã, các tùy chọn được tìm thấy là một mảng kết hợp và các khóa có thể là bất kỳ:

  • 'truy vấn': Một mảng các cặp khóa/giá trị truy vấn (không có bất kỳ mã hóa URL nào) để nối thêm vào URL.
  • 'đoạn': Mã định danh đoạn (có tên là neo) để thêm vào URL. Không bao gồm ký tự '#' ở đầu.
  • 'tuyệt đối': Mặc định là FALSE. Có buộc đầu ra là một liên kết tuyệt đối hay không (bắt đầu bằng http :). Hữu ích cho các liên kết sẽ được hiển thị bên ngoài trang web, chẳng hạn như trong nguồn cấp dữ liệu RSS.
  • 'thuộc tính': Một mảng liên kết gồm các thuộc tính HTML sẽ được thêm vào thẻ liên kết nếu bạn sử dụng lớp \Drupal\Core\Link để tạo liên kết.
  • 'ngôn ngữ': Một đối tượng ngôn ngữ tùy chọn được sử dụng để tra cứu bí danh cho URL. Nếu $options['language'] bị bỏ qua, nó sẽ mặc định là ngôn ngữ hiện tại cho loại ngôn ngữ LanguageInterface::TYPE_URL.
  • 'https': Liệu URL này có trỏ đến một vị trí an toàn hay không. Nếu không được xác định, lược đồ hiện tại sẽ được sử dụng, vì vậy người dùng sẽ tiếp tục sử dụng HTTP hoặc HTTPS tương ứng. TRUE thực thi HTTPS và FALSE thực thi HTTP.

Sau đó, tôi đã cập nhật logic của mình trong bản dựng biểu mẫu để tìm kiếm các tham số truy vấn và sử dụng thông tin đó nếu có.

Nhìn thấy https://api.drupal.org/api/drupal/core!lib!Drupal!Core!Form!FormState.php/feft/FormState%3A%3AsetRedirect/8.9.x để biết thêm thông tin về setRedirect().

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