You are here

public function AdminSettingsForm::buildForm in Commerce Add To Cart Link 8

Same name and namespace in other branches
  1. 2.x src/Form/AdminSettingsForm.php \Drupal\commerce_add_to_cart_link\Form\AdminSettingsForm::buildForm()

Form constructor.

Parameters

array $form: An associative array containing the structure of the form.

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.

Return value

array The form structure.

Overrides ConfigFormBase::buildForm

File

src/Form/AdminSettingsForm.php, line 65

Class

AdminSettingsForm
Provides the admin form for editing module settings.

Namespace

Drupal\commerce_add_to_cart_link\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {
  $config = $this
    ->config('commerce_add_to_cart_link.settings');
  $form['csrf_token'] = [
    '#type' => 'details',
    '#title' => $this
      ->t('CSRF token'),
    '#open' => TRUE,
    '#tree' => TRUE,
  ];

  /** @var \Drupal\user\RoleInterface[] $roles */
  $roles = $this->roleStorage
    ->loadMultiple();
  usort($roles, function ($a, $b) {

    /**
     * @var \Drupal\user\RoleInterface $a
     * @var \Drupal\user\RoleInterface $b
     */
    return $a
      ->getWeight() - $b
      ->getWeight();
  });
  $role_options = array_reduce($roles, function ($result, $item) {

    /** @var \Drupal\user\RoleInterface $item */
    $result[$item
      ->id()] = $item
      ->label();
    return $result;
  }, []);
  $form['csrf_token']['roles'] = [
    '#type' => 'checkboxes',
    '#title' => $this
      ->t('Roles'),
    '#description' => $this
      ->t('Add to cart and add to wishlist links will be protected with a session based CSRF token for users having at least one role checked here. Enabling CSRF tokens for anonymous user role can cause problems with static page cache and reverse proxies, as the tokens vary by user session.'),
    '#options' => $role_options,
    '#default_value' => $config
      ->get('csrf_token.roles'),
  ];
  return parent::buildForm($form, $form_state);
}