InviteLinkBlockForm.php in Invite 8
File
modules/invite_link/src/Form/InviteLinkBlockForm.php
View source
<?php
namespace Drupal\invite_link\Form;
use Drupal\Core\Form\FormBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\invite\Entity\Invite;
class InviteLinkBlockForm extends FormBase {
public function getFormId() {
return 'invite_link_block_form';
}
public function buildForm(array $form, FormStateInterface $form_state) {
$form['create_invite'] = [
'#type' => 'button',
'#value' => $this
->t('Create invite'),
'#limit_validation_errors' => [
[
'create_invite',
],
],
'#executes_submit_callback' => TRUE,
'#ajax' => [
'callback' => '::ajaxReplaceInviteContainer',
'wrapper' => 'invite',
'method' => 'replace',
],
];
$form['invite_containter'] = [
'#type' => 'container',
'#prefix' => '<div id="invite">',
'#suffix' => '</div>',
];
return $form;
}
public function ajaxReplaceInviteContainer($form, FormStateInterface $form_state) {
$form['invite_container']['#markup'] = '<div id="invite"> <a href="/invite/accept/' . $form_state
->getTemporaryValue('invite')
->getRegCode() . '">Invite Link</a></div>';
return $form['invite_container'];
}
public function submitForm(array &$form, FormStateInterface $form_state) {
$invite_type = $form_state
->getBuildInfo()['args'][0];
$invite = Invite::create([
'type' => $invite_type,
]);
$invite
->setPlugin('invite_link');
$invite
->save();
$form_state
->setTemporaryValue('invite', $invite);
}
}