Điểm:0

Làm cách nào để cập nhật giá trị được gửi biểu mẫu web khi nhấp vào một nút?

lá cờ in

Làm cách nào tôi có thể cập nhật dữ liệu đã gửi chỉ bằng cách nhấp vào nút? Tôi đã tạo một bảng Xem các phần phụ của biểu mẫu web và tôi muốn thêm một cột bằng nút "Phê duyệt". Khi người dùng nhấp vào nút này, giá trị dữ liệu phải được cập nhật. Ý định của tôi là tối ưu hóa "chỉnh sửa" và "lưu", tránh màn hình chỉnh sửa Biểu mẫu. Thêm một hành động tùy chỉnh trong "Biểu mẫu hàng loạt hoạt động gửi biểu mẫu web" cũng giải quyết được sự cố của tôi.

Điểm:4
lá cờ ne

Bạn có thể dùng hook_entity_operation để thêm một hoạt động thực thể tùy chỉnh để gửi biểu mẫu web. với Tích hợp dạng xem biểu mẫu web bạn đã có thể thêm trường "Hoạt động" vào chế độ xem của mình.Nó liệt kê các hoạt động mặc định tùy thuộc vào cấp độ truy cập (Chỉnh sửa, Xóa, v.v.). Ở đó thao tác tùy chỉnh của bạn sẽ xuất hiện.

MYMODULE.module

<?php

/**
 * @tập tin
 * Móc được triển khai bởi mô-đun MYMODULE.
 */

sử dụng Drupal\Core\Entity\EntityInterface;
sử dụng Drupal\webform\WebformSubmissionInterface;

/**
 * Triển khai hook_entity_operation().
 */
function MYMODULE_entity_operation(EntityInterface $submission) {
  hoạt động $ = [];
  if ($submission instanceof WebformSubmissionInterface) {
    if ($submission->getElementData('MY_HIDDEN_REVIEW_ELEMENT') !== 'đã phê duyệt') {
      $operations['phê duyệt'] = [
        'tiêu đề' => t('Chấp thuận'),
        'trọng lượng' => 15,
        'url' => Url::fromRoute('MYMODULE.webform_submission_approve', [
          'gửi' => $gửi->id(),
        ], [
          'truy vấn' => \Drupal::destination()->getAsArray(),
        ]),
      ];
    }
  }
  trả lại hoạt động $;
}

MYMODULE.routing.yml

MYMODULE.webform_submission_approve:
  đường dẫn: '/admin/MYMODULE/submission/{submission}/phê duyệt'
  mặc định:
    _controller: '\Drupal\MYMODULE\Controller\WebformSubmissionApproveController::approve'
  tùy chọn:
    thông số:
      nộp hồ sơ:
        gõ: 'thực thể: webform_submission'
  yêu cầu:
    _custom_access: '\Drupal\MYMODULE\Controller\WebformSubmissionApproveController::access'

src/Controller/WebformSubmissionApproveController.php

<?php

không gian tên Drupal\MYMODULE\Controller;

sử dụng Drupal\Core\Access\AccessResult;
sử dụng Drupal\Core\Controller\ControllerBase;
sử dụng Drupal\webform\Entity\WebformSubmission;
sử dụng Symfony\Thành phần\HttpFoundation\RedirectResponse;
sử dụng Symfony\Thành phần\HttpFoundation\Request;

/**
 * Lớp WebformSubmissionApproveController.
 *
 * @package Drupal\MYMODULE\Controller
 */
lớp WebformSubmissionApproveController mở rộng ControllerBase {

  /**
   * Phê duyệt phương pháp.
   *
   * @param \Drupal\webform\Entity\WebformSubmission $submission
   * Gửi biểu mẫu web.
   * @param \Symfony\Component\HttpFoundation\Request $request
   * Yêu cầu HTTP hiện tại.
   *
   * @return mảng|\Symfony\Component\HttpFoundation\RedirectResponse
   *   Phản hồi.
   *
   * @throws \Drupal\Core\Entity\EntityStorageException
   */
  chức năng công cộng phê duyệt(WebformSubmission $submission, Request $request) {

    $submission->setElementData('MY_HIDDEN_REVIEW_ELEMENT', 'đã phê duyệt');
    $submission->save();

    $this->messenger()->addMessage($this->t('Gửi @serial đã được phê duyệt.', [
      '@serial' => $submission->serial(),
    ]));

    trả về $request->query->get('destination') ? RedirectResponse mới($request->query->get('destination')) : [];
  }

  /**
   * Kiểm tra quyền truy cập cho một yêu cầu cụ thể.
   *
   * @return \Drupal\Core\Access\AccessResult
   * Kết quả truy cập.
   *
   * @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException
   * @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException
   */
  truy cập chức năng công cộng (WebformSubmission $submission) {
    trả về AccessResult::allowedIf(!$submission->isDraft() && in_array('administrator', $this->currentUser()->getRoles()));
  }

}

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