# Trait yii\base\DynamicContentAwareTrait

Implemented by | yii\filters\PageCache, yii\widgets\FragmentCache
Available since version | 2.0.14
Source Code | https://github.com/yiisoft/yii2/blob/master/framework/base/DynamicContentAwareTrait.php

DynamicContentAwareTrait implements common methods for classes which support a yii\base\View dynamic content feature.

## Public Methods

Hide inherited methods

Method | Description | Defined By
--- | --- | ---
addDynamicPlaceholder() | Adds a placeholder for dynamic content. | yii\base\DynamicContentAwareTrait
getDynamicPlaceholders() | Returns a list of placeholders for dynamic content. This method is used internally to implement the content caching feature. | yii\base\DynamicContentAwareTrait
setDynamicPlaceholders() | Sets a list of placeholders for dynamic content. This method is used internally to implement the content caching feature. | yii\base\DynamicContentAwareTrait

## Protected Methods

Hide inherited methods

Method | Description | Defined By
--- | --- | ---
getView() | Returns the view object that can be used to render views or view files using dynamic contents. | yii\base\DynamicContentAwareTrait
updateDynamicContent() | Replaces placeholders in $content with results of evaluated dynamic statements. | yii\base\DynamicContentAwareTrait

## Method Details

Hide inherited methods

addDynamicPlaceholder() public method

Adds a placeholder for dynamic content.

This method is used internally to implement the content caching feature.

public void addDynamicPlaceholder ( $name, $statements )
$name | string | The placeholder name.
$statements | string | The PHP statements for generating the dynamic content.

Source code

                    public function addDynamicPlaceholder($name, $statements)
    {
        $this->_dynamicPlaceholders[$name] = $statements;
    }

getDynamicPlaceholders() public method

Returns a list of placeholders for dynamic content. This method is used internally to implement the content caching feature.

public array getDynamicPlaceholders ( )
return | array | A list of placeholders.

Source code

                    public function getDynamicPlaceholders()
    {
        return $this->_dynamicPlaceholders;
    }

getView() protected abstract method

Returns the view object that can be used to render views or view files using dynamic contents.

protected abstract yii\base\View getView ( )
return | yii\base\View | The view object that can be used to render views or view files.

Source code

                    abstract protected function getView();

setDynamicPlaceholders() public method

Sets a list of placeholders for dynamic content. This method is used internally to implement the content caching feature.

public void setDynamicPlaceholders ( $placeholders )
$placeholders | array | A list of placeholders.

Source code

                    public function setDynamicPlaceholders($placeholders)
    {
        $this->_dynamicPlaceholders = $placeholders;
    }

updateDynamicContent() protected method

Replaces placeholders in $content with results of evaluated dynamic statements.

protected string updateDynamicContent ( $content, $placeholders, $isRestoredFromCache = false )
$content | string | Content to be parsed.
$placeholders | string[] | Placeholders and their values.
$isRestoredFromCache | boolean | Whether content is going to be restored from cache.
return | string | Final content.

Source code

                    protected function updateDynamicContent($content, $placeholders, $isRestoredFromCache = false)
    {
        if (empty($placeholders) || !is_array($placeholders)) {
            return $content;
        }
        if (count($this->getView()->getDynamicContents()) === 0) {
            // outermost cache: replace placeholder with dynamic content
            foreach ($placeholders as $name => $statements) {
                $placeholders[$name] = $this->getView()->evaluateDynamicContent($statements);
            }
            $content = strtr($content, $placeholders);
        }
        if ($isRestoredFromCache) {
            $view = $this->getView();
            foreach ($placeholders as $name => $statements) {
                $view->addDynamicPlaceholder($name, $statements);
            }
        }
        return $content;
    }