SettingsCommand.php

Same filename in other branches
  1. 9 core/lib/Drupal/Core/Ajax/SettingsCommand.php
  2. 8.9.x core/lib/Drupal/Core/Ajax/SettingsCommand.php
  3. 10 core/lib/Drupal/Core/Ajax/SettingsCommand.php

Namespace

Drupal\Core\Ajax

File

core/lib/Drupal/Core/Ajax/SettingsCommand.php

View source
<?php

namespace Drupal\Core\Ajax;

use Drupal\Component\Utility\UrlHelper;

/**
 * AJAX command for adjusting Drupal's JavaScript settings.
 *
 * The 'settings' command instructs the client either to use the given array as
 * the settings for ajax-loaded content or to extend drupalSettings with the
 * given array, depending on the value of the $merge parameter.
 *
 * This command is implemented by Drupal.AjaxCommands.prototype.settings()
 * defined in misc/ajax.js.
 *
 * @ingroup ajax
 */
class SettingsCommand implements CommandInterface {
    
    /**
     * An array of key/value pairs of JavaScript settings.
     *
     * This will be used for all commands after this if they do not include their
     * own settings array.
     *
     * @var array
     */
    protected $settings;
    
    /**
     * Whether the settings should be merged into the global drupalSettings.
     *
     * By default (FALSE), the settings that are passed to Drupal.attachBehaviors
     * will not include the global drupalSettings.
     *
     * @var bool
     */
    protected $merge;
    
    /**
     * Constructs a SettingsCommand object.
     *
     * @param array $settings
     *   An array of key/value pairs of JavaScript settings.
     * @param bool $merge
     *   Whether the settings should be merged into the global drupalSettings.
     */
    public function __construct(array $settings, $merge = FALSE) {
        $this->settings = $settings;
        $this->merge = $merge;
    }
    
    /**
     * Implements Drupal\Core\Ajax\CommandInterface:render().
     */
    public function render() {
        if (isset($this->settings['ajax_page_state']['libraries'])) {
            $this->settings['ajax_page_state']['libraries'] = UrlHelper::compressQueryParameter($this->settings['ajax_page_state']['libraries']);
        }
        return [
            'command' => 'settings',
            'settings' => $this->settings,
            'merge' => $this->merge,
        ];
    }

}

Classes

Title Deprecated Summary
SettingsCommand AJAX command for adjusting Drupal's JavaScript settings.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.