Chúng tôi cần thêm 'trường lặp lại' vào biểu mẫu dựa trên đầu vào được cung cấp trong trường văn bản. Thông thường, chúng tôi sử dụng nút 'thêm trường khác' để theo dõi số trường sẽ hiển thị trong xây dựngForm()
và cập nhật số đó trong lệnh gọi lại gửi trên nút.
Tuy nhiên, chức năng chúng tôi muốn không phải là điều đó. Chúng tôi có nhu cầu để khi ai đó nhập văn bản vào trường văn bản (không phải trường trống), nó sẽ thêm một nhóm trường bổ sung bên dưới trường đó. Chúng tôi đang cho phép mọi người quét mã vạch và mỗi khi họ quét mã vạch vào trường văn bản, chúng tôi muốn nó tạo một nhóm trường khác để họ có thể quét một mục khác nếu muốn.
Chúng tôi đã cố gắng sử dụng #Gửi đi
trên trường văn bản, nhưng #submit dường như không kích hoạt trên trường văn bản, vì chúng tôi đã thêm một câu lệnh in, cũng như một $form-state->set()
trong đó, và cố gắng in ra $form_state->get()
trên biểu mẫu vô ích.
Vì bạn không thể cập nhật form_state bên trong lệnh gọi lại ajax, nên chúng tôi không thể tìm ra cách để đạt được những gì chúng tôi muốn làm (Thêm một nhóm trường khác sau khi văn bản được nhập vào vùng văn bản).
Có cách nào khác chúng ta có thể làm điều này?
(Chúng tôi chỉ cho phép thêm 10 nhóm cho mỗi lần gửi, vì vậy, như một 'giải pháp thay thế', chúng tôi tự động thêm 10 nhóm vào buildForm, sau đó sử dụng #Những trạng thái
để ẩn từng trường nếu trường văn bản trước đó không có dữ liệu, nhưng điều này không cho phép chúng tôi thêm nút 'xóa' cho từng trường văn bản để người dùng có thể xóa trường văn bản mà họ không muốn sử dụng.)