找到了!
如果您构建自定义表单,Civi 需要一些字段用于创建新的 Drupal 用户。
1:转到 Civi 配置文件 (/civicrm/admin/uf/group?reset=1) 并选择要包含在表单中的所需配置文件。我选择了“您的注册表单”。转到配置文件的设置并选择“用于 => Drupal 用户注册”在高级设置中检查需要创建帐户
2:在您的自定义表单中,实现函数:'civicrm_form_user_register_form_alter'。
public function buildForm(array $form, \Drupal\Core\Form\FormStateInterface $form_state) {
$validators = array(
'file_validate_extensions' => array('jpg jpeg png'),
);
$form['uname'] = array(
'#type' => 'textfield',
'#placeholder' => t('Username*'),
'#required' => TRUE,
'#attributes' => array('class' => array('form-control')),
);
$form['organisation'] = array(
'#type' => 'textfield',
'#placeholder' => t('Organisation name*'),
'#required' => TRUE,
'#attributes' => array('class' => array('form-control')),
);
$form['password'] = array(
'#type' => 'password_confirm',
'#placeholder' => t('Password*'),
'#required' => TRUE,
'#attributes' => array('class' => array('form-control')),
);
$form['name'] = array(
'#type' => 'textfield',
'#placeholder' => t('Full Name*'),
'#required' => TRUE,
'#attributes' => array('class' => array('form-control')),
);
$form['email'] = array(
'#type' => 'email',
'#placeholder' => t('Email Address*'),
'#required' => TRUE,
'#attributes' => array('class' => array('form-control')),
);
$form['street'] = array(
'#type' => 'textfield',
'#placeholder' => t('Street*'),
'#required' => TRUE,
'#attributes' => array('class' => array('form-control')),
);
$form['nr'] = array(
'#type' => 'textfield',
'#placeholder' => t('Nr*'),
'#required' => TRUE,
'#attributes' => array('class' => array('form-control')),
);
$form['zipcode'] = array(
'#type' => 'textfield',
'#placeholder' => t('Zipcode*'),
'#required' => TRUE,
'#attributes' => array('class' => array('form-control')),
);
$form['city'] = array(
'#type' => 'textfield',
'#placeholder' => t('City*'),
'#required' => TRUE,
'#attributes' => array('class' => array('form-control')),
);
//This did the trick!
if( function_exists('civicrm_form_user_register_form_alter') ) {
civicrm_form_user_register_form_alter($form,$form_state,'customRegistration');
}
$form['actions'] = array('#type' => 'actions');
$form['actions']['submit'] = array(
'#type' => 'submit',
'#value' => $this->t('Create'),
'#attributes' => array('class' => array('btn', 'btn-cs', 'btn-outline')),
);
$form['#validate'][] = array($this, 'regValidate');
return $form;
}
2:在您的模板中,添加具有来自 Civi 函数的字段名称的字段:
{{custom_registration_form.civicrm_profile_register}}
您可以在 /modules/civicrm-drupal/civicrm.module 中找到名称
$form['civicrm_profile_register'] = array(
'#markup' => \Drupal\Core\Render\Markup::create($html),
'#cache' => [
'max-age' => 0,
],
);
配置文件中的字段将包含在您的自定义表单中,并且会话密钥不再有问题。