Score:0

จะเพิ่มตัวจัดการการส่งไปยังคลาสฟอร์มบน Drupal 8 ได้อย่างไร

ธง cn

ฉันต้องการเพิ่มตัวจัดการการส่งในคลาสฟอร์มของฉันเพื่อให้ค่าที่ส่งได้รับการบันทึก คลาสพาเรนต์ไม่บันทึก แต่แสดงเฉพาะข้อความ ฉันใช้ Drupal 8! นี่คือคลาสแบบฟอร์มของฉัน:

<?php

เนมสเปซ Drupal\อวยพร\ฟอร์ม;

ใช้ Drupal\Core\Form\ConfigFormBase;
ใช้ Drupal\Core\Form\FormStateInterface;

Class GreetingForm ขยาย ConfigFormBase {

  /**
   * {@inheritdoc}
   */
  ฟังก์ชั่นสาธารณะ getFormId () {
    กลับ 'greeting_form';
  }

/**
   * {@inheritdoc}
   */
  ฟังก์ชันสาธารณะ buildForm (อาร์เรย์ $form, FormStateInterface $form_state) {

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

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

    $form['page_text'] = อาร์เรย์(
      '#type' => 'textarea',
      '#title' => $this->t('เนื้อหาของหน้าทักทาย'),
      '#default_value' => $config->get('page_text'),
      '#description' => $this->t('อนุญาตให้คุณกำหนดข้อความของหน้าคำทักทาย'),
    );

    คืนฟอร์ม $;
  }

  /**
   * {@inheritdoc}
   */
  ฟังก์ชันสาธารณะ validateForm (อาร์เรย์ &$form, FormStateInterface $form_state) {

  }

  /**
   * {@inheritdoc}
   */
  ฟังก์ชันสาธารณะ submitForm (อาร์เรย์ &$form, FormStateInterface $form_state) {

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

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

    ส่งคืนพาเรนต์::submitForm($form, $form_state);
  }

  /**
   * {@inheritdoc}
   */
  ฟังก์ชันที่ได้รับการป้องกัน getEditableConfigNames () {
    กลับ [
      'ทักทายการตั้งค่า',
    ];
  }

}

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

ฉันต้องทำอย่างไร?

id flag
âsaveâ ในที่นี้หมายถึงอะไร รหัสของคุณไม่ได้บันทึกค่าในการกำหนดค่าที่ใช้งานอยู่หรือไม่
Jaypan avatar
de flag
รหัสที่คุณต่อท้ายชั้นเรียนจะไม่แสดงค่าที่คุณบันทึกไว้ หากนั่นคือวิธีที่คุณพิจารณาว่าไม่มีการบันทึก แสดงว่าคุณระบุไม่ถูกต้อง จากการปรากฏตัวทั้งหมด คลาสของคุณน่าจะเซฟได้ดี
cn flag
@cilefen ใช่ รหัสของฉันจัดเก็บค่าในการกำหนดค่าที่ใช้งานอยู่แล้ว
cn flag
@Jaypan ใช่ ฉันลบโค้ดตอนเลิกเรียน ขอบคุณมาก!
Score:0
ธง hk

ดูเหมือนว่าปัญหาที่รายงานในรายละเอียดของคำถามได้รับการแก้ไขแล้ว และดูเหมือนว่ารหัสในคำถามจะทำงานได้

อย่างไรก็ตาม สำหรับใครก็ตามที่มาถึงหน้านี้และพยายามหาคำตอบสำหรับคำถามในชื่อ นี่คือคำตอบ

คุณสามารถแนบตัวจัดการการส่งแบบกำหนดเองเพื่อส่งปุ่มในแบบฟอร์มโดยตั้งค่าคุณสมบัติ #submit บนปุ่มส่ง

$form['actions']['button_name'] = [
  '#type' => 'ส่ง',
  '#value' => $this->t('ข้อความของปุ่ม'),
  '#submit' => ['::customSubmitHandler1', '::customSubmitHandler2'],
];

customSubmitHandler1 และ customSubmitHandler2 จะเป็นฟังก์ชันที่กำหนดไว้ในคลาสฟอร์มของคุณ

หากคุณต้องการเรียกใช้ฟังก์ชันที่กำหนดไว้ในโมดูล คุณสามารถเพิ่ม 'custom_module_submit_handler' ซึ่งสามารถเป็นฟังก์ชันที่กำหนดไว้ในโมดูล

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา