it-swarm.com.de

Programmgesteuertes Abrufen von Webformularübermittlungen eines bestimmten Knoten-Webformulars

In Drupal 8) gibt es derzeit keine Funktion webform_get_submissions ().

Webformulare können an Knoten angehängt werden. So erhalten Sie alle Übermittlungen eines Webformulars, die zu einem bestimmten Knoten gehören (z. B. Knoten-ID = 15):

webform_get_submissions_by_node_id () ... ist die gewünschte Funktion.

Es gibt hier ähnliche Fragen, aber der Code PHP, um nur die Übermittlungen zu erhalten, die auf einem bestimmten Knoten erstellt wurden, ist unterschiedlich. Und dafür gibt es jetzt noch eine Antwort zu finden.

7
drupalfan

Vielen Dank, dass Sie 4k4. Hier ist jetzt der richtige und vollständige Code zur Verwendung in der Datei mytheme.theme (wir benötigen die Funktion getData ():

$storage = \Drupal::entityTypeManager()->getStorage('webform_submission');
$webform_submission = $storage->loadByProperties([
  'entity_type' => 'node',
  'entity_id' => $variables['node']->id(),
]);
$submission_data = array();
foreach ($webform_submission as $submission) {
  $submission_data[] = $submission->getData();
}
8
drupalfan

Alle aktuellen Antworten sind korrekt, aber das Laden von Einsendungen durch ein Webformular, eine Quellentität und/oder ein Konto sollte etwas einfacher sein. Daher habe ich Problem Nr. 2954515: WebformSubmissionStorage :: loadByEntities-Methode hinzufügen erstellt, was dies erfordert Lassen Sie die vollständig geladenen Entitäten die zugehörigen Übermittlungen laden.

$storage = \Drupal::entityTypeManager()->getStorage('webform_submission');
$webform_submissions = $storage->loadByEntities($webform, $node);
3
jrockowitz

In der Version Drupal 8) von Webform-Übermittlungen werden sie in einer Entität gespeichert, und Sie können sie wie jede andere Berechtigung abrufen, z. B. mithilfe von loadByProperties():

$storage = \Drupal::entityTypeManager()->getStorage('webform_submission');
$submissions = $storage->loadByProperties([
  'entity_type' => 'node',
  'entity_id' => '123',
]);
3
4k4

Sie können auch Drupals entityQuery() verwenden, um erweiterte Filter/Bedingungen zu erstellen:

$query = \Drupal::entityQuery('webform_submission')
                ->condition('entity_type', 'node')
                ->condition('entity_id', 123, '='); // optional operator
$results = $query->execute();

Beachten Sie, dass $results enthält nur SID (Submission ID). Möglicherweise müssen Sie diese über den Entity Loader laden:

\Drupal\webform\Entity\WebformSubmission::loadMultiple($results)
1
Geolim4