Điểm:0

Kết xuất trường tùy chỉnh từ biểu mẫu đăng ký người dùng

lá cờ zm

Tôi đang cố gắng hiển thị trường tùy chỉnh hiển thị trên biểu mẫu đăng ký người dùng trên một biểu mẫu mới riêng biệt tạo người dùng có vai trò cụ thể với các quyền cụ thể.

Tôi có mọi thứ đang hoạt động ngoại trừ việc có thể hiển thị trường tùy chỉnh này.

Khi tôi xem trường trong trang cài đặt biểu mẫu đăng ký người dùng, nó cho biết đó là trường tham chiếu thực thể. Khi nó hiển thị, nó có 4 hộp kiểm.

Tôi đã tìm ra cách tách các trường trên biểu mẫu đăng ký người dùng từ biểu mẫu mới của mình, nhưng tôi không thể tìm ra cách hiển thị trường cụ thể mà tôi cần.

$entityTypeManager = \Drupal::service('entity_field.manager');
$fields = $entityTypeManager->getFieldDefinitions('người dùng', 'người dùng');

foreach ($fields as $field_name) {
  kint($field_name);
}

Điều đó mang lại cho tôi danh sách tất cả các trường trong đăng ký người dùng.

Tôi cảm thấy như tôi đang thiếu một cái gì đó rất rõ ràng.

4uk4 avatar
lá cờ cn
Thông thường, bạn sẽ tạo một chế độ biểu mẫu tùy chỉnh và định cấu hình các tiện ích trường mà bạn cần. Tôi nghĩ bạn đang đặt câu hỏi vì bạn đã tạo biểu mẫu từ đầu. Điều này dễ dàng đối với các loại trường đơn giản, nhưng rất nhiều công việc đối với các loại trường phức tạp.
lá cờ zm
Vâng, đó là bản dựng từ đầu trong một mô-đun. Điều này phải được triển khai và bật trong quá trình sản xuất mà chúng tôi có quyền kiểm soát tối thiểu vì một khách hàng liên bang. Tôi thấy rất ít về việc tạo biểu mẫu đăng ký tùy chỉnh và sử dụng lại các trường từ biểu mẫu người dùng.
Điểm:2
lá cờ cn

Chế độ biểu mẫu là cấu hình mà bạn có thể triển khai qua CMI (drush cex/cim) hoặc cài đặt với mô-đun bằng cách bao gồm các tệp YAML trong thư mục cấu hình mô-đun.

Việc triển khai chế độ biểu mẫu đăng ký mới không trực quan lắm. Những thứ cơ bản:

  1. Tạo chế độ biểu mẫu:

    /admin/cấu trúc/chế độ hiển thị/biểu mẫu
    
  2. Kích hoạt và định cấu hình nó như trong câu hỏi này cho cài đặt sẵn Đăng ký chế độ biểu mẫu:

    Làm cách nào để ẩn các trường tùy chỉnh trên biểu mẫu đăng ký?

  3. Để đặt chế độ biểu mẫu mới trên một trang, bạn cần có mô-đun đóng góp

    https://www.drupal.org/project/form_mode_manager

    hoặc mã tùy chỉnh:

    Làm cách nào để tôi tải biểu mẫu có hiển thị biểu mẫu cụ thể (chế độ biểu mẫu)?

    hoặc một tuyến đường tùy chỉnh:

    mymodule.routing.yml

    mymodule.register2:
      đường dẫn: '/admin/người/ch-tạo'
      mặc định:
        _entity_form: 'user.register2'
        _title: 'Tạo tài khoản mới'
      yêu cầu:
        _permission: 'đăng ký một số người dùng'
    

    đăng ký2 cần được đăng ký làm trình xử lý biểu mẫu trong loại thực thể:

    mymodule.module

    function mymodule_entity_type_build(mảng &$entity_types) {
      $entity_types['user']->setFormClass('register2', 'Drupal\user\RegisterForm');
    }
    
lá cờ zm
Ok, nếu tôi hiểu bạn chính xác, biểu mẫu đăng ký người dùng có chế độ biểu mẫu không thể truy cập được nếu không nhảy qua một số vòng (tức là sử dụng mô-đun đóng góp này). Đúng không? Tôi muốn viết mã này hơn là dựa vào một mô-đun đóng góp, nhưng trước tiên hãy để tôi xem xét vấn đề này một chút. Các mô-đun đóng góp phải được phê duyệt và ký tắt (chỉ là điều tự nhiên của một số khách hàng được cấp nguồn).
4uk4 avatar
lá cờ cn
Chế độ biểu mẫu *Đăng ký* được cài đặt sẵn là chế độ biểu mẫu duy nhất hoạt động vượt trội mà không cần mã bổ sung. Đối với chế độ biểu mẫu tùy chỉnh, chẳng hạn như *Đăng ký 2*, bạn cần **hoặc** mô-đun đóng góp **hoặc** mã tùy chỉnh.
lá cờ zm
Vì vậy, tôi vẫn đang xoay quanh điều này. Tôi không thực sự cố gắng tạo một chế độ biểu mẫu mới. Tôi ổn với việc sử dụng chế độ biểu mẫu đăng ký sẵn dùng.Tôi chỉ đang cố gắng đưa trường tham chiếu thực thể đã được thêm vào biểu mẫu đăng ký người dùng vào biểu mẫu đăng ký người dùng thứ hai để tạo người dùng có vai trò duy nhất. Tôi có thể truy cập tất cả các loại thông tin về trường thông qua kint, nhưng tôi không thể kết xuất thông tin đó từ hàm buildForm. Mọi thứ khác hiển thị tốt. Tôi đoán tôi không hiểu làm thế nào một chế độ biểu mẫu cần thiết ở đây nếu tôi có thể truy cập dữ liệu trường.
lá cờ zm
FYI....mô-đun đóng góp có một số lỗi và có vẻ như không hoạt động trong Drupal 9 ngay bây giờ.
4uk4 avatar
lá cờ cn
Hai giải pháp này chỉ là ví dụ để làm rõ những gì cần phải làm, có rất nhiều giải pháp khác cho bước 3 như xây dựng lộ trình biểu mẫu tùy chỉnh. Nếu bạn gặp khó khăn ở điểm này, hãy đặt câu hỏi với chi tiết nơi bạn muốn đặt biểu mẫu thứ hai trên trang web của mình.
lá cờ zm
Ồ tôi hiểu rồi. Trên thực tế .... tôi đã bỏ qua chi tiết đó. Đây là một hình thức quản trị.Nói cách khác, người dùng ẩn danh không thể truy cập được. Trường hợp sử dụng là họ muốn cho phép ai đó thêm người dùng có vai trò nhất định nhưng không muốn cấp cho họ quyền truy cập vào biểu mẫu đăng ký đầy đủ. Tôi đã xây dựng hoàn chỉnh biểu mẫu đó và hoạt động ngoại trừ việc tôi cần một trường từ biểu mẫu đăng ký chính là trường tham chiếu thực thể. Đường dẫn đến biểu mẫu là /admin/people/ch-create và mọi thứ được tạo bởi mô-đun tôi đã viết. Tôi chỉ bị mắc kẹt trong việc nhận được một lĩnh vực này. Tôi không tìm thấy nhiều về các trường sử dụng lại theo chương trình.
4uk4 avatar
lá cờ cn
OK, sau đó tạo một tuyến biểu mẫu thực thể cho đường dẫn. Xem câu trả lời đã chỉnh sửa.
lá cờ zm
Cảm ơn sự kiên nhẫn của bạn với tôi. Tôi đã không thực sự đạt được những gì tôi muốn. Tôi chưa bao giờ có thể tìm ra cách tải một trường duy nhất từ ​​biểu mẫu đăng ký chính sang biểu mẫu đăng ký mới ở phía quản trị viên. Một lần nữa, có rất ít tài liệu về các trường sử dụng lại theo chương trình. Nhưng điều này đã giúp tôi tạo lại hoàn toàn biểu mẫu đăng ký chính và tôi chỉ thay đổi nó theo nhu cầu của mình và phân công vai trò cho nó sau khi hoàn thành. Cảm ơn sự giúp đỡ của bạn!

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