class AccountInfo in Flexiform 8
Form element class for user accounts.
Plugin annotation
@FormElement(
id = "account_info",
label = @Translation("Account Info"),
context = {
"account" = @ContextDefinition("entity:user", label = @Translation("User")),
}
)
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Component\Plugin\ContextAwarePluginBase implements ContextAwarePluginInterface
- class \Drupal\Core\Plugin\ContextAwarePluginBase implements CacheableDependencyInterface, ContextAwarePluginInterface uses DependencySerializationTrait, StringTranslationTrait, TypedDataTrait
- class \Drupal\flexiform\FormElement\ContextAwareFormElementBase implements FormElementInterface uses StringTranslationTrait, FormElementBaseTrait
- class \Drupal\flexiform\Plugin\FormElement\AccountInfo
- class \Drupal\flexiform\FormElement\ContextAwareFormElementBase implements FormElementInterface uses StringTranslationTrait, FormElementBaseTrait
- class \Drupal\Core\Plugin\ContextAwarePluginBase implements CacheableDependencyInterface, ContextAwarePluginInterface uses DependencySerializationTrait, StringTranslationTrait, TypedDataTrait
- class \Drupal\Component\Plugin\ContextAwarePluginBase implements ContextAwarePluginInterface
Expanded class hierarchy of AccountInfo
File
- src/
Plugin/ FormElement/ AccountInfo.php, line 20
Namespace
Drupal\flexiform\Plugin\FormElementView source
class AccountInfo extends ContextAwareFormElementBase {
/**
* {@inheritdoc}
*/
public function form(array $form, FormStateInterface $form_state) {
// @todo: Inject?
$config = \Drupal::config('user.settings');
$user = \Drupal::currentUser();
$account = $this
->getContext('account')
->getContextValue();
$form['#type'] = 'container';
$form['mail'] = [
'#type' => 'email',
'#title' => $this
->t('Email address'),
'#description' => $this
->t('A valid email address. All emails from the system will be sent to this address. The email address is not made public and will only be used if you wish to receive a new password or wish to receive certain news or notifications by email.'),
'#required' => !(!$account
->getEmail() && $user
->hasPermission('administer users')),
'#default_value' => !$account
->isAnonymous() ? $account
->getEmail() : '',
];
$form['name'] = [
'#type' => 'textfield',
'#title' => $this
->t('Username'),
'#maxlength' => USERNAME_MAX_LENGTH,
'#description' => $this
->t("Several special characters are allowed, including space, period (.), hyphen (-), apostrophe ('), underscore (_), and the @ sign."),
'#required' => TRUE,
'#attributes' => [
'class' => [
'username',
],
'autocorrect' => 'off',
'autocapitalize' => 'off',
'spellcheck' => 'false',
],
'#default_value' => !$account
->isAnonymous() ? $account
->getAccountName() : '',
'#access' => $account
->isAnonymous() || $user
->id() == $account
->id() && $user
->hasPermission('change own username') || $user
->hasPermission('administer users'),
];
// Display a passowrd field only for existing users or when a user is
// allowed to assign a new password.
if (!$account
->isAnonymous()) {
$form['pass'] = [
'#type' => 'password_confirm',
'#size' => 25,
'#description' => $this
->t('To changed the current user password, entity the new password in both fields.'),
];
if ($user
->id() == $account
->id()) {
$form['current_pass'] = [
'#type' => 'password',
'#title' => $this
->t('Current password'),
'#size' => 25,
'#weight' => -5,
'#attributes' => [
'autocomplete' => 'off',
],
'#description' => $this
->t('Required if you want to change the %mail or %pass below. <a href=":request_new_url" title="Send password reset instructions via email.">Reset your password</a>.', [
'%mail' => $form['mail']['#title'],
'%pass' => $this
->t('Password'),
':request_new_url' => Url::fromRoute('user.pass')
->toString(),
]),
];
}
}
elseif (!$config
->get('verify_email') || $user
->hasPermission('administer users')) {
$form['pass'] = [
'#type' => 'password_confirm',
'#size' => 25,
'#description' => $this
->t('Provide a password for the new account in both fields.'),
'#required' => TRUE,
];
}
return $form;
}
/**
* {@inheritdoc}
*/
public function buildEntities(array $form, FormStateInterface $form_state) {
/** @var \Drupal\user\UserInterface $account */
$account = $this
->getContext('account')
->getContextValue();
$element_values = $form_state
->getValue($form['#parents']);
// Set the existing password of set in form state.
$current_pass = trim($element_values['current_pass']);
if (strlen($current_pass) > 0) {
$account
->setExistingPassword($current_pass);
}
$account->pass->value = $element_values['pass'];
$account->name->value = $element_values['name'];
$account->mail->value = $element_values['mail'];
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
AccountInfo:: |
public | function |
Overrides FormElementBaseTrait:: |
|
AccountInfo:: |
public | function |
Build the form element. Overrides FormElementInterface:: |
|
ContextAwarePluginBase:: |
protected | property | The data objects representing the context of this plugin. | |
ContextAwarePluginBase:: |
private | property | Data objects representing the contexts passed in the plugin configuration. | |
ContextAwarePluginBase:: |
protected | function | Wraps the context handler. | |
ContextAwarePluginBase:: |
protected | function |
Overrides ContextAwarePluginBase:: |
|
ContextAwarePluginBase:: |
public | function |
The cache contexts associated with this object. Overrides CacheableDependencyInterface:: |
9 |
ContextAwarePluginBase:: |
public | function |
The maximum age for which this object may be cached. Overrides CacheableDependencyInterface:: |
7 |
ContextAwarePluginBase:: |
public | function |
The cache tags associated with this object. Overrides CacheableDependencyInterface:: |
4 |
ContextAwarePluginBase:: |
public | function |
This code is identical to the Component in order to pick up a different
Context class. Overrides ContextAwarePluginBase:: |
|
ContextAwarePluginBase:: |
public | function |
Overrides ContextAwarePluginBase:: |
|
ContextAwarePluginBase:: |
public | function |
Overrides ContextAwarePluginBase:: |
|
ContextAwarePluginBase:: |
public | function |
Gets a mapping of the expected assignment names to their context names. Overrides ContextAwarePluginInterface:: |
|
ContextAwarePluginBase:: |
public | function |
Gets the defined contexts. Overrides ContextAwarePluginInterface:: |
|
ContextAwarePluginBase:: |
public | function |
Gets the value for a defined context. Overrides ContextAwarePluginInterface:: |
|
ContextAwarePluginBase:: |
public | function |
Gets the values for all defined contexts. Overrides ContextAwarePluginInterface:: |
|
ContextAwarePluginBase:: |
public | function |
Set a context on this plugin. Overrides ContextAwarePluginBase:: |
|
ContextAwarePluginBase:: |
public | function |
Sets a mapping of the expected assignment names to their context names. Overrides ContextAwarePluginInterface:: |
|
ContextAwarePluginBase:: |
public | function |
Sets the value for a defined context. Overrides ContextAwarePluginBase:: |
|
ContextAwarePluginBase:: |
public | function |
Validates the set values for the defined contexts. Overrides ContextAwarePluginInterface:: |
|
ContextAwarePluginBase:: |
public | function |
Overrides \Drupal\Component\Plugin\PluginBase::__construct(). Overrides PluginBase:: |
4 |
ContextAwarePluginBase:: |
public | function | Implements magic __get() method. | |
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
FormElementBaseTrait:: |
public | function | ||
FormElementBaseTrait:: |
public | function | ||
FormElementBaseTrait:: |
public | function | ||
FormElementBaseTrait:: |
public | function | ||
FormElementBaseTrait:: |
public | function | ||
PluginBase:: |
protected | property | Configuration information passed into the plugin. | 1 |
PluginBase:: |
protected | property | The plugin implementation definition. | 1 |
PluginBase:: |
protected | property | The plugin_id. | |
PluginBase:: |
constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
PluginBase:: |
public | function |
Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: |
3 |
PluginBase:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
PluginBase:: |
public | function | Determines if the plugin is configurable. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. | |
TypedDataTrait:: |
protected | property | The typed data manager used for creating the data types. | |
TypedDataTrait:: |
public | function | Gets the typed data manager. | 2 |
TypedDataTrait:: |
public | function | Sets the typed data manager. | 2 |