CommandWithAttachedAssetsTrait.php

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

Namespace

Drupal\Core\Ajax

File

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

View source
<?php

namespace Drupal\Core\Ajax;

use Drupal\Core\Asset\AttachedAssets;

/**
 * Trait for Ajax commands that render content and attach assets.
 *
 * @ingroup ajax
 */
trait CommandWithAttachedAssetsTrait {
    
    /**
     * The attached assets for this Ajax command.
     *
     * @var \Drupal\Core\Asset\AttachedAssets
     */
    protected $attachedAssets;
    
    /**
     * Processes the content for output.
     *
     * If content is a render array, it may contain attached assets to be
     * processed.
     *
     * @return string|\Drupal\Component\Render\MarkupInterface
     *   HTML rendered content.
     */
    protected function getRenderedContent() {
        $this->attachedAssets = new AttachedAssets();
        if (is_array($this->content)) {
            if (!$this->content) {
                return '';
            }
            $html = \Drupal::service('renderer')->renderRoot($this->content);
            $this->attachedAssets = AttachedAssets::createFromRenderArray($this->content);
            return $html;
        }
        else {
            return $this->content;
        }
    }
    
    /**
     * Gets the attached assets.
     *
     * @return \Drupal\Core\Asset\AttachedAssets|null
     *   The attached assets for this command.
     */
    public function getAttachedAssets() {
        return $this->attachedAssets;
    }

}

Traits

Title Deprecated Summary
CommandWithAttachedAssetsTrait Trait for Ajax commands that render content and attach assets.

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