Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Как сделать, чтобы компонент вернул результат в переменную

00 голосов
6
Требуется, чтобы IncludeComponent вернула код не на экран, а в переменную, для дальнейшей обработки.

Что-то вроде

Код
$res = $APPLICATION->IncludeComponent(
   "Имя компонента",
   "",
   Array(
     ****
   )
);


Компонент стандартный, но измененный, то есть с ним можно делать что угодно.
спросил 05 Окт, 13 от Plasma50 (360 баллов)

6 Ответы

00 голосов
Как понять - не на экран?
Можно отключить шаблон и оперировать массивом данных, для него предназначенным
ответил 18 Окт, 13 от Yago (360 баллов)
00 голосов
Пока делаю так.

Код
    ob_start(); 
       /*  код компонента   */ 
       $out1 = ob_get_contents(); 
    ob_end_clean(); 


Но вопрос остается, что надо написать в компоненте, чтобы вернуть содержимое шаблона.
Цитата

Можно отключить шаблон и оперировать массивом данных, для него предназначенным

Вы предлагаете заменить эту строчку: $this->IncludeComponentTemplate(); ?
ответил 21 Янв, 14 от Plasma50 (360 баллов)
00 голосов
Цитата
Артемий Зайцев пишет:
Но вопрос остается, что надо написать в компоненте, чтобы вернуть содержимое шаблона.

Как ни странно return $out1;
ответил 09 Май, 14 от Almarea (3,760 баллов)
00 голосов
Цитата
Дмитрий Яковенко пишет:
Цитата
Артемий Зайцев пишет:

Но вопрос остается, что надо написать в компоненте, чтобы вернуть содержимое шаблона.


Как ни странно return $out1;


Это я и так сделал.. Работает. Без всякой модификации компонентов. Но кажется - ob_start(); не очень хороший стиль.
ответил 04 Сен, 14 от Plasma50 (360 баллов)
00 голосов
Цитата
Артемий Зайцев пишет:
Это я и так сделал.. Работает. Без всякой модификации компонентов. Но кажется - ob_start(); не очень хороший стиль.

Ну так верните $arResult, или что вам надо, я не пойму.
ответил 11 Янв, 15 от Almarea (3,760 баллов)
00 голосов
Ага, непонятно, что конкретно хотите получить в итоговой переменной. Не HTML-код шаблона ведь...
ответил 28 Апр, 15 от Yago (360 баллов)