Как правильно добавлять дополнительные свойства в существующий компонент с помощью component_epilog?

Как можно обойти кэширование свойств, переданных из компонента в "component_epilog" с помощью `$this->__component->setResultCacheKeys()`, чтобы гарантировать, что любые изменения в свойствах отразятся на выводе страницы в "component_epilog"?
  • 10 июля 2024 г. 19:02
Ответы на вопрос 1
Чтобы добавить дополнительные свойства в существующий компонент с помощью `component_epilog`, вам нужно использовать метод `$this->__component->arResult['NEW_PROPERTY'] = значение;` внутри функции `executeComponent()` вашего компонента. Например:

```php
public function executeComponent()
{
    // добавляем новое свойство в $arResult
    $this->__component->arResult['NEW_PROPERTY'] = 'значение'; 
    
    // остальной код компонента
}
```

Чтобы обойти кэширование свойств и гарантировать, что любые изменения будут отражены на выводе страницы, вы можете использовать метод `$this->__component->setResultCacheKeys()`. Создайте в методе `executeComponent()` массив ключей, которые должны учитываться при кэшировании, и передайте его методу `setResultCacheKeys()`. Например:

```php
public function executeComponent()
{
    // добавляем новое свойство в $arResult
    $this->__component->arResult['NEW_PROPERTY'] = 'значение'; 
    
    // определяем ключи для кэширования (включая новосозданное свойство)
    $arResultCacheKeys = [
        'NEW_PROPERTY'
    ];

    // устанавливаем ключи для кэширования
    $this->__component->setResultCacheKeys($arResultCacheKeys);
    
    // остальной код компонента
}
```

Теперь при изменении значения свойства `NEW_PROPERTY` в `component_epilog`, результат кэширования компонента будет учитывать это свойство, и любые изменения будут отражены на выводе страницы.
Похожие вопросы