Skip to content

Instantly share code, notes, and snippets.

@mharmuth
Last active January 21, 2021 17:12
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mharmuth/0ab021d5b65e4cab7c6efec951fc59e9 to your computer and use it in GitHub Desktop.
Save mharmuth/0ab021d5b65e4cab7c6efec951fc59e9 to your computer and use it in GitHub Desktop.
Custom Webform Handler for Drupal 8 Webform module
<?php
namespace Drupal\your_custom_module\Plugin\WebformHandler;
use Drupal\user\Entity\User;
/**
* Create a new user entity from a webform submission.
*
* @WebformHandler(
* id = "create_user",
* label = @Translation("Create User"),
* category = @Translation("Entity creation"),
* description = @Translation("Creates a new drupal user."),
* cardinality = \Drupal\webform\Plugin\WebformHandlerInterface::CARDINALITY_UNLIMITED,
* results = \Drupal\webform\Plugin\WebformHandlerInterface::RESULTS_PROCESSED,
* )
*/
class RegisterFacilityHandler extends WebformHandlerBase
{
/**
* {@inheritdoc}
*/
public function postSave(
WebformSubmissionInterface $webformSubmission,
$update = true
) {
$user = $this->createUser($webformSubmission);
// do something with $user
}
/**
* Create user.
*
* @param WebformSubmissionInterface $webformSubmission
*
* @return User
*/
protected function createUser(WebformSubmissionInterface $webformSubmission): User
{
$email = $webformSubmission->getData('email');
/** @var User $user */
$user = User::create();
// madatory fields
$user->setPassword($webformSubmission->getData('password'));
$user->setEmail($email);
$user->setUsername($webformSubmission->getData('username'));
$user->addRole('user');
$user->enforceIsNew();
// optional fields
$user->set('init', $email);
$user->set('langcode', 'en');
$user->set('preferred_langcode', 'en');
$user->set('preferred_admin_langcode', 'en');
$user->save();
return $user;
}
}
@bmango
Copy link

bmango commented Jan 21, 2021

I think line 19 should read:
class CreateUserHandler extends WebformHandlerBase

@bmango
Copy link

bmango commented Jan 21, 2021

Thank you very much for the example btw :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment