Điểm:0

Làm cách nào để thêm trình xử lý gửi vào lớp biểu mẫu trên Drupal 8?

lá cờ cn

Tôi muốn thêm một trình xử lý gửi vào lớp biểu mẫu của mình để lưu các giá trị đã gửi. Lớp cha không lưu chúng mà chỉ hiển thị một thông báo. Tôi sử dụng Drupal 8! Đây là lớp biểu mẫu của tôi:

<?php

không gian tên Drupal\lời chào\Mẫu;

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

lớp GreetingForm mở rộng ConfigFormBase {

  /**
   * {@inheritdoc}
   */
  hàm công khai getFormId() {
    trả về 'lời chào_mẫu';
  }

/**
   * {@inheritdoc}
   */
  chức năng công khai buildForm(mảng $form, FormStateInterface $form_state) {

    $form = parent::buildForm($form, $form_state);

    $config = $this->config('greeting.settings');

    $form['page_text'] = mảng(
      '#type' => 'vùng văn bản',
      '#title' => $this->t('Nội dung của trang Lời chào'),
      '#default_value' => $config->get('page_text'),
      '#description' => $this->t('Cho phép bạn xác định văn bản của trang Lời chào'),
    );

    trả về biểu mẫu $;
  }

  /**
   * {@inheritdoc}
   */
  hàm công khai validateForm(mảng &$form, FormStateInterface $form_state) {

  }

  /**
   * {@inheritdoc}
   */
  hàm công khai submitForm(mảng &$form, FormStateInterface $form_state) {

    $config = $this->config('greeting.settings');

    $config->set('page_text', $form_state->getValue('page_text'));
    
    $config->save();

    trả về cha mẹ::submitForm($form, $form_state);
  }

  /**
   * {@inheritdoc}
   */
  chức năng được bảo vệ getEditableConfigNames() {
    trở lại [
      'lời chào.cài đặt',
    ];
  }

}

$config = \Drupal::config('greeting.settings');
$page_title = $config->get('page_text');

Tôi phải làm nó như thế nào?

lá cờ id
âsaveâ có nghĩa là gì ở đây? Mã của bạn không lưu giá trị vào cấu hình đang hoạt động?
Jaypan avatar
lá cờ de
Mã bạn đã thêm vào cuối lớp sẽ không hiển thị giá trị bạn đã lưu. Nếu đó là cách bạn xác định nó không tiết kiệm, thì bạn đang xác định sai. Từ tất cả các lần xuất hiện, lớp của bạn sẽ được lưu tốt.
lá cờ cn
@cilefen Có, mã của tôi đã lưu trữ giá trị trong cấu hình đang hoạt động.
lá cờ cn
@Jaypan Vâng, tôi đã xóa mã ở cuối lớp. Cảm ơn rất nhiều!
Điểm:0
lá cờ hk

Có vẻ như sự cố được báo cáo trong chi tiết câu hỏi đã được giải quyết và mã trong câu hỏi dường như đang hoạt động.

Tuy nhiên, đối với bất kỳ ai truy cập trang này để cố gắng tìm câu trả lời cho câu hỏi trong tiêu đề, thì đây là câu trả lời.

Bạn có thể đính kèm trình xử lý gửi tùy chỉnh để gửi các nút trong biểu mẫu bằng cách đặt thuộc tính #submit trên nút gửi.

$form['actions']['button_name'] = [
  '#type' => 'gửi',
  '#value' => $this->t('Văn bản Nút'),
  '#submit' => ['::customSubmitHandler1', '::customSubmitHandler2'],
];

customSubmitHandler1tùy chỉnhSubmitHandler2 sẽ là các hàm được định nghĩa bên trong lớp biểu mẫu của bạn.

Thay vào đó, nếu bạn muốn gọi một hàm được xác định trong một mô-đun, bạn có thể thêm 'custom_module_submit_handler' có thể là một chức năng được xác định trong một mô-đun.

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