Как передать результат виджета Yii2 в переменную - PullRequest
0 голосов
/ 07 мая 2018

Я просто застрял с вопросом, как получить результат выполнения одного виджета и преобразовать его в переменную. У меня где-то что-то вроде:

[
    'label' => 'Images',
    'content' => $contentImages,
],

И у меня тоже есть виджет:

<?php OwlCarouselWidget::begin(); ?>

    <div class="item-class"><img src="/img/girl.png" alt="Image 1"></div>
    <div class="item-class"><img src="/img/girl.png" alt="Image 2"></div>
    <div class="item-class"><img src="/img/girl.png" alt="Image 3"></div>

<?php OwlCarouselWidget::end(); ?>

Но вопрос в том, как мне получить результат виджета в виде HTML и поместить его в переменную $contentImages?

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

из контроллера вы можете получить это так

$viewParams = [
    'localViewVariable' = 'something'
];

$content = $this->renderPartial('@views/widgets/widget-view', $viewParams);
// or
$content = $this->view->renderPhpFile('/full/path/to/widget.php', $viewParams);
0 голосов
/ 07 мая 2018

Хорошо, я только что узнал, как решить мою проблему.

Я поместил код виджета на одну страницу просмотра.

Затем в другом своем представлении я поставил этот код:

function read($file) {
ob_start();
include($file);
$content = ob_get_contents();
ob_end_clean();
return $content; 
}  
    $contentImages = read(__DIR__ .'/widgets/widget-view.php')

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

...