Điểm:-2

Tôi có thể sử dụng hai biểu mẫu khác nhau trong một mô-đun không?

lá cờ cn

Tôi mới sử dụng Drupal 8 và tôi tự hỏi liệu tôi có thể sử dụng hai biểu mẫu bên trong thư mục Biểu mẫu (mymodule/src/Form/) hay không. Tên biểu mẫu của tôi là FormOne.php và FormTwo.php.

Tôi chỉ có thể hiển thị và sử dụng FormOne.php thông qua toàn bộ mô-đun của mình.

Tôi đã nghiên cứu nó và không thể tìm thấy câu trả lời.

Bạn có thể giúp tôi hiển thị biểu mẫu thứ hai không?

Điểm:2
lá cờ ru

Bạn có thể tạo Biểu mẫu tùy chỉnh trong MyCustomFormA.php

<?php

không gian tên Drupal\MY_MODULE\Form;

sử dụng Drupal\Core\Form\FormBase;
sử dụng Drupal\Core\Form\FormStateInterface;

/**
 * Lớp MyCustomFormA.
 */
lớp MyCustomFormA mở rộng FormBase {

  /**
   * {@inheritdoc}
   */
  hàm công khai getFormId() {
    trả về 'my_custom_form_a';
  }
.....
}

Tương tự như vậy bạn có thể tạo một Form khác trong MyCustomFormB.php

<?php

không gian tên Drupal\MY_MODULE\Form;

sử dụng Drupal\Core\Form\FormBase;
sử dụng Drupal\Core\Form\FormStateInterface;

/**
 * Lớp MyCustomFormB.
 */
lớp MyCustomFormB mở rộng FormBase {

  /**
   * {@inheritdoc}
   */
  hàm công khai getFormId() {
    trả lại 'my_custom_form_b';
  }
....
}

trong bạn MY_MODULE.routing.yml

MY_MODULE.my_custom_form_a:
  đường dẫn: '/MY_MODULE/my_custom_form_a'
  mặc định:
    _form: '\Drupal\MY_MODULE\Form\MyCustomFormA'
    _title: 'Biểu mẫu A tùy chỉnh của tôi'
  yêu cầu:
    _permission: 'truy cập nội dung'
MY_MODULE.my_custom_form_b:
  đường dẫn: '/MY_MODULE/my_custom_form_b'
  mặc định:
    _form: '\Drupal\MY_MODULE\Form\MyCustomFormB'
    _title: 'Biểu mẫu B tùy chỉnh của tôi'

  yêu cầu:
    _permission: 'truy cập nội dung'
Jeirod avatar
lá cờ cn
Cảm ơn bạn đã phản hồi, @Razeem. Đối với `MyCustomFormB.php`, tôi có nên khai báo nó trên định tuyến.yml không?
Razeem Ahmad avatar
lá cờ ru
Nếu bạn muốn hiển thị nó trong một trang cụ thể thì có
Jeirod avatar
lá cờ cn
bạn có cần `yêu cầu` trong mỗi biểu mẫu không. Nó mang lại cho tôi 'HTTP ERROR 500'. Tôi cũng đã cố xóa bộ nhớ cache và nó cũng báo lỗi tương tự.
Razeem Ahmad avatar
lá cờ ru
vâng, bạn cũng có thể thêm điều đó
Jeirod avatar
lá cờ cn
Cảm ơn bạn rất nhiều @Razeem
Razeem Ahmad avatar
lá cờ ru
Chào mừng @JeirodAbogado.
Điểm:2
lá cờ de

Có, bạn có thể định nghĩa bao nhiêu biểu mẫu trong một mô-đun tùy theo nhu cầu.

Nếu bạn muốn đưa hai biểu mẫu vào một trang, bạn có thể làm như vậy bằng cách sử dụng trình tạo biểu mẫu trong bộ điều khiển của mình để gọi cả hai biểu mẫu và tạo mảng kết xuất.

Thay vì sử dụng _mẫu đơn trong bạn *.routing.yml tập tin, thay vào đó bạn sẽ sử dụng _bộ điều khiểnvà xác định gọi lại bộ điều khiển thay vì gọi lại biểu mẫu. Bộ điều khiển của bạn sau đó sẽ giống như thế này:

lớp ExampleController mở rộng Drupal\Core\Controller\ControllerBase {

  chức năng ví dụPageCallback() {
    // Lưu ý - bạn nên sử dụng phép nội xạ phụ thuộc để đưa vào dịch vụ này, 
    // thay vì phương thức này.
    $form_builder = \Drupal::service('form_builder');

    $return [
      'form_a' => $form_builder->getForm('Drupal\[MODULE]\Form\FormA'),
      'form_b' => $form_builder->getForm('Drupal\[MODULE]\Form\FormB'),
    ];
  }
}
Jeirod avatar
lá cờ cn
Cảm ơn bạn đã phản hồi, @Jaypan. Tôi hỏi câu hỏi này vì tôi nhận thấy rằng FormOne chỉ có thể được sử dụng và hiển thị. Có vẻ như tôi không thể sử dụng và hiển thị FormTwo. Tôi có nên khai báo từng biểu mẫu trong định tuyến.yml không?
Jaypan avatar
lá cờ de
Nếu bạn muốn biểu mẫu có thể truy cập được tại một tuyến đường, vâng, đó là một cách bạn có thể sử dụng biểu mẫu thứ hai.
Jeirod avatar
lá cờ cn
Có thể thêm cả hai tuyến trong định tuyến.yml không? `mymodule.display_form:` ` đường dẫn: '/mymodule'` ` mặc định:` ` _form: '\Drupal\mymodule\Form\FormOne'` ` _form: '\Drupal\mymodule\Form\FormTwo'`
Kevin avatar
lá cờ in
Bạn cần xây dựng một bộ điều khiển trả về một mảng kết xuất chứa cả hai biểu mẫu trong trường hợp đó.
Jaypan avatar
lá cờ de
Tôi đã cập nhật câu trả lời của mình.
Jeirod avatar
lá cờ cn
@Jaypan, cảm ơn vì đã cập nhật. Tôi dự định sử dụng từng biểu mẫu trong một trang riêng biệt. Nó cũng có thể?
Jaypan avatar
lá cờ de
Có, trong trường hợp đó, bạn sẽ sử dụng phương pháp mà Razeem đã đăng làm câu trả lời. Câu trả lời của anh ấy là làm thế nào để có các trang riêng biệt cho từng biểu mẫu. Câu trả lời của tôi là làm thế nào để có hai biểu mẫu trên một trang.
Jeirod avatar
lá cờ cn
Cảm ơn bạn cho các giải pháp. @Jaypan
Jaypan avatar
lá cờ de
Bạn nên đánh dấu câu trả lời của anh ấy là chính xác, nhưng hãy cho cả hai chúng tôi một phiếu bầu cho câu trả lời của chúng tôi. Đó là phong tục ở đây :) Chào mừng bạn.
Jeirod avatar
lá cờ cn
Chắc chắn rồi @Jaypan, cả hai câu trả lời đều hữu ích. Cảm ơn bạn rất nhiều.
Jeirod avatar
lá cờ cn
Cũng cảm ơn bạn @Kevin vì thông tin bổ sung

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