Dans Drupal 8 il n'y a pas de fonction webform_get_submissions () à ce jour).
Les formulaires Web peuvent être attachés aux nœuds. Comment obtenir toutes les soumissions d'un formulaire Web qui appartiennent à un nœud spécifique (par exemple, ID de nœud = 15):
webform_get_submissions_by_node_id () ... est la fonction recherchée.
Il y a des questions similaires ici, mais le code PHP pour obtenir uniquement les soumissions qui ont été créées sur un nœud spécifique est différent. Et pour cela, il y a encore maintenant une réponse à trouver.
Merci 4k4. Voici maintenant le code correct et complet à utiliser dans le fichier mytheme.theme (nous avons besoin de la fonction 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();
}
Toutes les réponses actuelles sont correctes mais le chargement des soumissions par un formulaire Web, une entité source et/ou un compte devrait être un peu plus facile, j'ai donc créé Problème # 2954515: Ajouter la méthode WebformSubmissionStorage :: loadByEntities ce qui vous oblige à avoir les entités entièrement chargées pour charger les soumissions associées.
$storage = \Drupal::entityTypeManager()->getStorage('webform_submission');
$webform_submissions = $storage->loadByEntities($webform, $node);
Dans la version Drupal 8, les soumissions de formulaires Web sont stockées dans une entité et vous pouvez les récupérer comme n'importe quel autre droit, par exemple en utilisant loadByProperties()
:
$storage = \Drupal::entityTypeManager()->getStorage('webform_submission');
$submissions = $storage->loadByProperties([
'entity_type' => 'node',
'entity_id' => '123',
]);
Vous pouvez également utiliser la entityQuery()
de Drupal pour créer des filtres/conditions avancés:
$query = \Drupal::entityQuery('webform_submission')
->condition('entity_type', 'node')
->condition('entity_id', 123, '='); // optional operator
$results = $query->execute();
Notez que $results
ne contiendra que SID (id de soumission), vous devrez peut-être les charger via son chargeur d'entité:
\Drupal\webform\Entity\WebformSubmission::loadMultiple($results)