Score:0

Web form Custom element

ธง jp

I created a custom webform element, It works perfectly, but when I add a table form element, It is not showing enter image description here

My Code :

    <?php

namespace Drupal\webform_mapper\Plugin\WebformElement;

use Drupal\Component\Utility\NestedArray;
use Drupal\Core\DependencyInjection\DependencySerializationTrait;
use Drupal\Core\Form\FormStateInterface;
use Drupal\webform\Plugin\WebformElementBase;
use Drupal\webform\WebformSubmissionInterface;

/**
 * Provides a 'webform_example_element' element.
 *
 * @WebformElement(
 *   id = "webform_example_element",
 *   label = @Translation("Webform example element"),
 *   description = @Translation("Provides a webform element example."),
 *   category = @Translation("Example elements"),
 * )
 *
 * @see \Drupal\webform_example_element\Element\WebformExampleElement
 * @see \Drupal\webform\Plugin\WebformElementBase
 * @see \Drupal\webform\Plugin\WebformElementInterface
 * @see \Drupal\webform\Annotation\WebformElement
 */
class WebformExampleElement extends WebformElementBase {

  use DependencySerializationTrait;

  /**
   * {@inheritdoc}
   */
  protected function defineDefaultProperties() {
    return [
        'multiple' => '',
        'size' => '',
        'minlength' => '',
        'maxlength' => '',
        'placeholder' => '',
        'source_webform' => '',
        'target_elements' => [],
        'reference_element' => [],
        'reference_element_2' => [],
      ] + parent::defineDefaultProperties();
  }

  /* ************************************************************************ */

  /**
   * {@inheritdoc}
   */
  public function prepare(array &$element, WebformSubmissionInterface $webform_submission = NULL) {
    parent::prepare($element, $webform_submission);

    // Here you can customize the webform element's properties.
    // You can also customize the form/render element's properties via the
    // FormElement.
    //
    // @see \Drupal\webform_example_element\Element\WebformExampleElement::processWebformElementExample
  }

  /**
   * {@inheritdoc}
   */
  public function form(array $form, FormStateInterface $form_state) {
    $form = parent::form($form, $form_state);

    $form['mapped_container'] = [
      '#type' => 'fieldset',
      '#title' => $this->t('Auto complete data element settings'),
      '#open' => TRUE,
      '#weight' => -10,
      '#attributes' => [
        'id' => ['webform-mapped-container'],
      ],
    ];

    $query = \Drupal::entityQuery('webform');
    $results = $query->execute();

    $form['mapped_container']['source_webform'] = [
      '#type' => 'select',
      '#title' => $this->t('Source webform'),
      '#options' => $results,
      '#ajax' => [
        'callback' => [$this, 'updateFormCallback'],
        'wrapper' => 'webform-mapped-container',
      ],
    ];

    $id = $form_state->getValue('source_webform') != NULL ? $form_state->getValue('source_webform') : '';
    if (!empty($id)) {
      $form['mapped_container']['reference_element'] = [
        '#type' => 'select',
        '#title' => $this->t('Reference Element'),
        '#options' => ['t1', 't2'],
      ];
      $form['mapped_container']['reference_element_2'] = [
        '#type' => 'select',
        '#title' => $this->t('Reference Element'),
        '#options' => ['t5', 't2'],
      ];

      $form['mapped_container']['target_elements'] = [
        '#type' => 'table',
        '#title' => $this->t('Map Source Elements to Target Elements'),
        '#header' => [
          $this
            ->t('Source Webform Elements'),
          $this
            ->t('Target Webform Elements'),
        ],
      ];

      for ($i = 1; $i <= 4; $i++) {
        $form['mapped_container']['target_elements'][$i]['name'] = [
          '#type' => 'textfield',
          '#title' => $this
            ->t('Name'),
          '#title_display' => 'invisible',
        ];
        $form['mapped_container']['target_elements'][$i]['phone'] = [
          '#type' => 'tel',
          '#title' => $this
            ->t('Phone'),
          '#title_display' => 'invisible',
        ];
      }

    }

    return $form;
  }

  public function updateFormCallback(array $form, FormStateInterface $form_state) {
    $id = $form_state->getValues()['properties']['source_webform'];
    $form_state->setValue('source_webform', $id);
    $triggering_element = $form_state->getTriggeringElement();
    $parents = array_slice($triggering_element['#array_parents'], 0, -1);
    $element = NestedArray::getValue($form, $parents);
    return $element;
  }

  /**
   * {@inheritdoc}
   */
  public function preview() {
    return [];
  }

}
Score:0
ธง jp

วิธีแก้ไข : เพิ่มแอตทริบิวต์ #access

$form['mapped_container']['target_elements'] = [
      '#type' => 'ตาราง',
      '#title' => $this->t('แมปองค์ประกอบต้นทางกับองค์ประกอบเป้าหมาย'),
      '#ส่วนหัว' => [
        $นี้
          ->t('องค์ประกอบเว็บฟอร์มต้นทาง'),
        $นี้
          ->t('กำหนดเป้าหมายองค์ประกอบเว็บฟอร์ม'),
      ]
      '#access' => จริง,
    ];

    สำหรับ ($i = 1; $i <= 4; $i++) {
      $form['mapped_container']['target_elements'][$i] = [
        '#access' => จริง,
        'c1' => [
          '#access' => จริง,
          '#type' => 'ช่องข้อความ',
          '#title' => $this->t('ชื่อ'),
        ]
        'c2' => [
          '#access' => จริง,
          '#type' => 'โทรศัพท์',
          '#title' => $this->t('โทรศัพท์'),
          '#title_display' => 'มองไม่เห็น',
        ]
      ];
    }
คำถามนี้เป็นภาษาอื่นๆ:

โพสต์คำตอบ

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