Điểm:0

Làm cách nào để chuyển hướng người dùng sau khi đăng nhập vào tuyến đường yêu cầu UID?

lá cờ ng

Tôi biết, đây có vẻ như là một câu hỏi cơ bản:

Trong Drupal 9, làm cách nào để chuyển hướng người dùng sau khi đăng nhập vào đường dẫn/tuyến đường yêu cầu UID trong đường dẫn?

Tôi đã nghiên cứu và thử các cách triển khai khác nhau nhưng không có cách triển khai nào hỗ trợ mã thông báo (Quy tắc, Chuyển hướng sau khi đăng nhập, v.v.)

Ví dụ: sau khi người dùng đăng nhập, họ sẽ truy cập "/homebox-page/dashboard/UID" <- giá trị số từ ID người dùng hiện tại.

Tôi đã hy vọng có một mô-đun đơn giản để xử lý việc này nhưng có vẻ như tôi cần phải thực hiện thông qua mã tùy chỉnh?

Kevin avatar
lá cờ in
Điều này giống như một người đăng ký sự kiện kiểm tra xem người dùng đã đăng nhập chưa, nếu không thì chuyển hướng họ và bao gồm tham số đích để họ quay lại đó sau khi đăng nhập.
berliner avatar
lá cờ bd
Vì bạn không liệt kê rõ ràng: [Đích đăng nhập](https://www.drupal.org/project/login_destination) dường như hỗ trợ mã thông báo.
quantumized avatar
lá cờ ng
Cảm ơn bạn. Tôi nghĩ rằng tôi sẽ sử dụng mã tùy chỉnh thay vì Đích đăng nhập bao gồm quá nhiều chức năng bổ sung mà một vài dòng mã có thể xử lý.
Điểm:1
lá cờ cn

Điều này có thể thực hiện được với một vài dòng mã tùy chỉnh. Biểu mẫu đăng nhập người dùng đã chuyển hướng đến thực thể.user.canonical, yêu cầu UID:

  hàm công khai submitForm(mảng &$form, FormStateInterface $form_state) {

    if (trống($uid = $form_state->get('uid'))) {
      trở lại;
    }
    $account = $this->userStorage->load($uid);

    // Điểm đến đã được đặt, có thể là trên bộ điều khiển ngoại lệ.
    if (!$this->getRequest()->request->has('destination')) {
      $form_state->setRedirect(
        'thực thể.user.canonical',
        ['người dùng' => $account->id()]
      );
    }
    khác {
      $this->getRequest()->query->set('destination', $this->getRequest()->request->get('destination'));
    }

    user_login_finalize($account);
  }
  

Bạn có thể thêm trình xử lý gửi của riêng mình làm tương tự, ghi đè lên chuyển hướng. Ở đó, bạn có thể sử dụng \Drupal::currentUser() vì user_login_FINFINize() trong trình xử lý gửi cốt lõi đặt dịch vụ này với người dùng vừa đăng nhập.

quantumized avatar
lá cờ ng
Cảm ơn bạn! Vâng, tôi thực sự đã kết thúc lộ trình xử lý gửi từ hook_form_alter() và nó hoạt động hoàn hảo.

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