如何将 Yii2 小部件结果传递给变量

How to pass Yii2 widget result to variable

我只是被这个问题困住了,如何获取一个小部件的执行结果,并将其转换为变量。 我有类似的东西:

[
    '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

好的,我刚刚找到解决问题的方法。

我把widget代码放到了一个单独的view page里。

然后,在我的另一个视图中,我输入了这段代码:

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

其实我不确定,如果这个解决方案是安全的,但没问题。

在控制器中你可以像这样得到它

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

$content = $this->renderPartial('@views/widgets/widget-view', $viewParams);
// or
$content = $this->view->renderPhpFile('/full/path/to/widget.php', $viewParams);