Puncte:0

Cum se actualizează valoarea trimisă unui formular web făcând clic pe un buton?

drapel in

Cum pot actualiza datele trimise doar făcând clic pe un buton? Am creat un tabel Vizualizare cu subisiuni de formulare web și aș dori să adaug o coloană cu un buton „Aprobare”. Când utilizatorul face clic pe acest buton, valoarea datelor trebuie actualizată. Intenția mea este să optimizez „editarea” și „salvarea”, evitând ecranul de editare a formularului. Adăugarea unei acțiuni personalizate într-un „formular în bloc pentru operațiuni de trimitere a formularelor web” îmi rezolvă și problema.

Puncte:4
drapel ne

Poți să folosești hook_entity_operation pentru a adăuga o operațiune de entitate personalizată pentru trimiterea formularelor web. Cu Integrarea vizualizărilor formularului web modul ar trebui să puteți adăuga deja un câmp „Operațiuni” la vizualizarea dvs.Listează operațiunile implicite în funcție de nivelurile de acces (Editare, Ștergere etc.). Acolo va apărea operația dvs. personalizată.

MYMODULE.modul

<?php

/**
 * @fișier
 * Cârlige implementate de modulul MYMODULE.
 */

utilizați Drupal\Core\Entity\EntityInterface;
utilizați Drupal\webform\WebformSubmissionInterface;

/**
 * Implementează hook_entity_operation().
 */
funcția MYMODULE_entity_operation(EntityInterface $submission) {
  $operatii = [];
  if ($submission instanceof WebformSubmissionInterface) {
    if ($submission->getElementData('MY_HIDDEN_REVIEW_ELEMENT') !== 'aprobat') {
      $operations['aprobă'] = [
        'title' => t('Aprobare'),
        „greutate” => 15,
        'url' => Url::fromRoute('MYMODULE.webform_submission_approve', [
          'submission' => $submission->id(),
        ], [
          'query' => \Drupal::destination()->getAsArray(),
        ]),
      ];
    }
  }
  returneaza $operatii;
}

MYMODULE.routing.yml

MYMODULE.webform_submission_approve:
  cale: „/admin/MYMODULE/submission/{submission}/approve”
  implicite:
    _controller: „\Drupal\MYMODULE\Controller\WebformSubmissionApproveController::approve”
  Opțiuni:
    parametri:
      transmitere:
        tip: „entity:webform_submission”
  cerinte:
    _custom_access: „\Drupal\MYMODULE\Controller\WebformSubmissionApproveController::access”

src/Controller/WebformSubmissionApproveController.php

<?php

spațiu de nume Drupal\MYMODULE\Controller;

utilizați Drupal\Core\Access\AccessResult;
utilizați Drupal\Core\Controller\ControllerBase;
utilizați Drupal\webform\Entity\WebformSubmission;
utilizați Symfony\Component\HttpFoundation\RedirectResponse;
utilizați Symfony\Component\HttpFoundation\Request;

/**
 * Clasa WebformSubmissionApproveController.
 *
 * @pachet Drupal\MYMODULE\Controller
 */
clasa WebformSubmissionApproveController extinde ControllerBase {

  /**
   * Aprobați metoda.
   *
   * @param \Drupal\webform\Entity\WebformSubmission $submission
   * O trimitere a unui formular web.
   * @param \Symfony\Component\HttpFoundation\Request $request
   * Solicitarea HTTP curentă.
   *
   * @return array|\Symfony\Component\HttpFoundation\RedirectResponse
   *   Raspunsul.
   *
   * @throws \Drupal\Core\Entity\EntityStorageException
   */
  funcția publică aprobare(WebformSubmission $submission, Request $request) {

    $submission->setElementData('MY_HIDDEN_REVIEW_ELEMENT', 'aprobat');
    $trimitere->salvare();

    $this->messenger()->addMessage($this->t('Submission @serial approved.', [
      '@serial' => $submission->serial(),
    ]));

    returnează $request->query->get('destinație') ? nou RedirectResponse($request->query->get('destination')): [];
  }

  /**
   * Verifică accesul pentru o anumită cerere.
   *
   * @return \Drupal\Core\Access\AccessResult
   * Rezultatul accesului.
   *
   * @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException
   * @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException
   */
  acces la funcția publică (WebformSubmission $submission) {
    return AccessResult::allowedIf(!$submission->isDraft() && in_array('administrator', $this->currentUser()->getRoles()));
  }

}

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.